agent/framework/processor/processor.go (9 lines): - line 84: //TODO do we need to implement CancelAll? - line 94: //TODO this should be abstract as the Processor's domain - line 153: // TODO worker pool should be triggered in the Start() function - line 307: //TODO this is a hack, in future jobID should be managed by Processing engine itself, instead of inferring from job's internal field - line 463: // TODO remove the direct file dependency once we encapsulate docmanager package - line 632: //TODO add shutdown as API call, move cancelFlag out of task pool; cancelFlag to contracts, nobody else above runplugins needs to create cancelFlag. - line 652: // TODO CancelCommand is currently treated as a special type of Command by the Processor, but in general Cancel operation should be seen as a probe to existing commands - line 680: // TODO remove this once CloudWatch plugin is reworked - line 685: //TODO once association service switches to use RC and CW goes away, remove this block agent/plugins/inventory/inventory.go (6 lines): - line 51: // TODO: add more unit tests. - line 579: //TODO: Each gatherer shall check each item's size and stop collecting if size exceed immediately - line 580: //TODO: only check the total item size at this function, whenever total size exceed, stop - line 581: //TODO: immediately and raise association error - line 614: //TODO: 200 KB limit might be too less for certain inventory types like Patch - we might have to revise that and - line 696: //TODO: take care of cancel flag (SSM-INV-233) common/filewatcherbasedipc/filewatcherchannel.go (5 lines): - line 47: // TODO add unittest - line 66: //TODO make this constructor private - line 80: //TODO if client is RunAs, server needs to grant client user R/W access respectively - line 347: //TODO handle buffered channel queue overflow - line 366: // TODO - create a new function for read using blocking file locks agent/framework/processor/executer/outofproc/messaging/backend.go (5 lines): - line 115: // TODO handle error and logging, when err, ask messaging to stop - line 116: // TODO version handling? - line 169: //TODO request messaging to stop - line 183: //TODO add extra logic to check whether plugin has started, if not, stop IPC, or add timeout - line 219: //TODO move the aggregator under executer package and protect it, there's global lock in this package agent/framework/processor/executer/outofproc/messaging/messaging.go (5 lines): - line 65: // TODO add version handling - line 83: // TODO add version and error handling - line 102: // TODO ipc should not be destroyed within this worker, destroying ipc object should be done in its caller: Executer - line 116: //TODO add timer, if IPC is unresponsive to Close(), force return - line 136: //TODO add timer, and if inbound has not closed within a given period, force return agent/association/processor/processor.go (5 lines): - line 73: //TODO this is what service should know - line 85: //TODO Rename everything to service and move package to framework - line 198: //TODO: add retry for load association detail - line 596: //TODO move this part to service - line 604: // TODO: totalNumberOfPlugins is no longer needed, we can get the same value from len(runtimeStatuses) agent/plugins/updateec2config/updateec2config.go (4 lines): - line 79: // TODO move the interface and structs into a separate file to reduce the size of this main file - line 153: // TODO add to update manager to merge codes between update agent and update ssm agent to avoid duplication - line 335: // TODO Create a command package for command execution - line 562: // TODO Make common methods go into utility/helper/common package. Check if Execute can be added to that package agent/plugins/downloadcontent/downloadcontent.go (4 lines): - line 90: // TODO: 08/25/2017 meloniam@ Change the type of SourceInfo and documentParameters to map[string]interface{} - line 91: // TODO: https://amazon.awsapps.com/workdocs/index.html#/document/7d56a42ea5b040a7c33548d77dc98040f0fb380bbbfb2fd580c861225e2ee1c7 - line 98: // TODO: meloniam@ 08/24/2017 Replace string type to map[string]inteface{} type once Runcommand supports string maps - line 99: // TODO: https://amazon.awsapps.com/workdocs/index.html#/document/7d56a42ea5b040a7c33548d77dc98040f0fb380bbbfb2fd580c861225e2ee1c7 agent/plugins/configurepackage/configurepackage.go (4 lines): - line 73: // TODO: Replace "additionalArguments" from string type to map[string]inteface{} type once Runcommand supports string maps - line 217: // TODO: Remove from repository? - line 237: // TODO: Consider putting uncompress into the ssminstaller new and not deleting it (since the zip is the repository-validatable artifact) - line 384: // TODO: When existing packages have idempotent installers and no reboot loops, remove this check for installing packages and allow the install to continue until it reports success without reboot agent/framework/runpluginutil/runpluginutil.go (4 lines): - line 43: // TODO: rename to RCPlugin, this represents RCPlugin interface. - line 94: // TODO remove executionID and creation date - line 130: //TODO properly initialize the plugin status - line 272: //TODO handle cancelFlag here agent/framework/processor/executer/outofproc/proc/process.go (4 lines): - line 48: //TODO confirm MSI Installer does not kill the child process - line 66: // TODO use the kill functions provided in executes package - line 77: //TODO connect stdin and stdout to avoid seelog error - line 89: // TODO figure out why sometimes argv does not contain program name agent/framework/processor/executer/outofproc/worker/main.go (4 lines): - line 80: //TODO add command timeout - line 83: //TODO wait for sigterm or send fail message to the channel? - line 91: //TODO figure out s3 aync problem - line 92: //TODO figure out why defer main doesnt work on windows agent/plugins/inventory/gatherers/network/dataProvider_unix.go (4 lines): - line 31: //TODO: collect dhcp, dns server info from dhcp lease - line 32: //TODO: collect gateway addresses (possibly from 'route -n') - line 33: //TODO: collect subnetmask - line 83: //TODO: current implementation is tied to inventory model where IPaddress is a string agent/update/processor/processor.go (3 lines): - line 331: // TODO: Support version wild-cards e.g. 3.0.* to get latest of a minor version - line 748: // Uninstall version - TODO - move the retry logic to ExeCommand while cleaning that function - line 781: // Install version - TODO - move the retry logic to ExeCommand while cleaning that function agent/contracts/aggregator.go (3 lines): - line 24: // TODO move part of the function to service? - line 73: // TODO instance this needs to be revised to be in parity with ec2config - line 91: // TODO : We need to handle above to be able to send document traceoutput in case of document level errors. agent/framework/processor/executer/outofproc/sessionworker/main.go (3 lines): - line 96: // TODO Add interface for worker - line 112: //TODO add command timeout - line 115: //TODO wait for sigterm or send fail message to the channel? agent/framework/processor/executer/outofproc/master.go (3 lines): - line 232: //TODO add command timeout as well, in case process get stuck - line 242: //TODO revisit this feature, it has done sides of killing the document worker too fast -- the worker might busy doing s3 upload - line 271: //TODO refactor cancelFlag.Wait() to return channel instead of blocking call agent/longrunning/plugin/cloudwatch/cloudwatch_windows.go (3 lines): - line 52: //TODO: Change the way the output is being returned to return exit codes - line 71: // TODO change these to deps.go later - line 292: //TODO Returning false here because we are unsure if Cloudwatch is running. Trying to kill PID will lead to error. Handle this situation agent/framework/docparser/docparser.go (3 lines): - line 78: // TODO: move DocumentContent/SessionDocumentContent from contracts to docparser. - line 346: // TODO: return a list of invalid parameters and expose it to the user in the document execution output - line 487: //TODO: Refactor this to not not reparse the docContent extra/aws-sdk-go/aws/awsutil/path_value.go (3 lines): - line 37: // TODO normalize case for user - line 87: // TODO if the value is the terminus it should not be created - line 129: // TODO resize slice agent/framework/docmanager/docmanager.go (3 lines): - line 49: // TODO use class lock instead of global lock? - line 50: // TODO decouple the DocState model to better fit the service-processor-executer architecture - line 199: // TODO rework this part agent/updateutil/updateinfo/updateinfo.go (2 lines): - line 171: // TODO: Change this structure to a switch and inject the platform name from another method. - line 195: // TODO: when versions below 2.2.546.0 have been deprecated, add line below agent/framework/processor/executer/basicexecuter/basicexecuter.go (2 lines): - line 29: // TODO currently BasicExecuter.Run() is not idempotent, we should make it so in future - line 77: //TODO decompose this function to return only Status extra/aws-sdk-go/private/model/api/shape.go (2 lines): - line 371: // TODO move this to shape validation resolution - line 936: {{/* TODO allow service custom input to be used */}} extra/aws-sdk-go/private/model/api/example.go (2 lines): - line 115: // TODO: Can delete - line 306: // TODO: In the operation docuentation where we list errors, this needs to be done agent/fileutil/artifact/artifact.go (2 lines): - line 204: //TODO:MF: This works, but the string trimming required makes me think there should be some easier way to get this information - line 205: //TODO:MF: Check IsTruncated and if so, make additional request(s) with Marker - currently we're limited to 1000 results agent/messageservice/messageservice.go (2 lines): - line 93: // TODO remove once we start doing stress tests using service mock framework - line 99: // TODO remove once we start doing stress tests using service mock framework agent/plugins/configurepackage/ssminstaller/ssminstaller.go (2 lines): - line 41: config contracts.Configuration // TODO:MF: See if we can use a smaller struct that has just the things we need - line 281: // TODO: Split into linux and windows agent/updateutil/updateutil.go (2 lines): - line 279: // TODO move to commandUtil - line 325: // TODO move to commandUtil extra/aws-sdk-go/aws/csm/reporter.go (2 lines): - line 137: // TODO: Probably want to figure something out for logging dropped - line 176: // TODO: What to do with this error? Probably should just log agent/runcommand/mds/offlineservice.go (2 lines): - line 80: messages.MessagesRequestId = &requestUuid // TODO:MF: Can this be the same as the commandID? - line 128: // TODO:MF: clean up old documents in dstDir? Or maybe do that in SendReply? Maybe both agent/plugins/configurepackage/birdwatcher/archive/archive.go (2 lines): - line 40: //TODO: Send this by address or reference - line 55: // TODO: additional validation agent/plugins/configurepackage/configurepackage_execute.go (2 lines): - line 29: // TODO: consider passing in the timeout and cancel channels - does cancel trigger rollback? - line 126: // TODO: Remove from repository if this isn't the last successfully installed version? Run uninstall to clean up? agent/framework/processor/executer/executer.go (2 lines): - line 26: //TODO in future, docState should be de-composed into static/dynamic && plugin/document informations - line 39: // TODO need to refactor global lock in docmanager, or discard the entire package and impl the file IO here agent/cli/clicommand/sendcommand.go (2 lines): - line 167: // TODO:MF: Write a URI loader utility - artifact really doesn't do that job - line 178: // TODO:MF: ideally we'd delete the file if we downloaded it - but it might've been a local file and we don't have a good way to tell agent/longrunning/manager/invoker.go (2 lines): - line 102: // TODO move persisting out of executing logic - line 106: // TODO separate persist part and actual running part agent/cli/cli.go (2 lines): - line 27: // TODO:MF: make errors more like ssm-cli: error: : ? - line 74: // TODO:MF: aws cli is case-sensitive on things other than parameter value, I propose we be case-insensitive on all non-values agent/plugins/configuredaemon/configuredaemon.go (2 lines): - line 72: // TODO:DAEMON: we're using the command line in a lot of places, we probably only need it in the rundaemon plugin or in the call to startplugin - line 117: // TODO:MF: make deps file to support mocking filesystem dependency agent/contracts/document.go (2 lines): - line 57: //TODO truncate this struct - line 128: // TODO This might be revisited when Agent-cli is written to list previously executed commands agent/plugins/configurepackage/birdwatcher/birdwatcherservice/birdwatcherservice.go (2 lines): - line 259: // TODO don't hardcode sha256 - use multiple checksums - line 272: // TODO: attempt to clean up failed download folder? agent/executers/executers.go (1 line): - line 48: //TODO: Remove Execute and rename NewExecute to Execute. agent/plugins/dockercontainer/dockercontainer.go (1 line): - line 127: // TODO:MF: This subdirectory is only needed because we could be running multiple sets of properties for the same plugin - otherwise the orchestration directory would already be unique agent/plugins/configurecontainers/configurecontainers.go (1 line): - line 96: // TODO:MF: This subdirectory is only needed because we could be running multiple sets of properties for the same plugin - otherwise the orchestration directory would already be unique agent/framework/coremanager/coremanager.go (1 line): - line 90: //TODO: initializations for all state tracking folders of core modules should be moved inside the corresponding core modules. agent/startup/startup_windows.go (1 line): - line 164: // TODO: Discover correct port to use. agent/health/healthcheck.go (1 line): - line 152: //TODO when will status become inactive? agent/contracts/compatibility.go (1 line): - line 25: // TODO deprecate this functionality once we update the windows update document agent/fileutil/filelock/filelock.go (1 line): - line 35: // TODO: Write platform-specific implementations instead. agent/longrunning/plugin/rundaemon/rundaemon_windows.go (1 line): - line 150: //TODO Currently pathnames with spaces do not seem to work correctly with the below agent/runcommand/coremodule.go (1 line): - line 171: //TODO This function should be called in service when it submits the document to the engine agent/framework/processor/executer/iohandler/multiwriter/multiwriter.go (1 line): - line 66: // TODO: Handler other error types and close the writers after a fixed number of retries agent/plugins/configurepackage/installer/installer.go (1 line): - line 29: Validate(tracer trace.Tracer, context context.T) contracts.PluginOutputter // TODO:MF consider whether we can remove validate in V1 - I think it depends on having truly idempotent installers for anything that reboots agent/session/retry/retryer.go (1 line): - line 29: // TODO Move to a common package for retry and merge with HibernateRetryStrategy extra/aws-sdk-go/internal/ini/literal_tokens.go (1 line): - line 122: // TODO: should probably return an error agent/update/processor/healthcheck.go (1 line): - line 110: //TODO populate ssmConnectionChannel if UUI call during Agent update requires data store update. agent/ssm/service.go (1 line): - line 334: //TODO: combine this with UpdateInstanceInfo agent/plugins/psmodule/psmodule.go (1 line): - line 114: // TODO:MF: This subdirectory is only needed because we could be running multiple sets of properties for the same plugin - otherwise the orchestration directory would already be unique extra/aws-sdk-go/service/dynamodb/expression/expression.go (1 line): - line 552: // TODO consider AST instead of string in the future agent/messageservice/utils/messageutil.go (1 line): - line 335: DocumentTraceOutput: "", // TODO: Fill me appropriately extra/aws-sdk-go/service/dynamodb/expression/condition.go (1 line): - line 1052: // TODO change this one agent/fileutil/harden_windows.go (1 line): - line 35: // TODO: Move away from hectane/go-acl and uses x/sys/windows to achieve agent/cli/cli_docs.go (1 line): - line 25: // TODO:MF: consider changing these to use templates agent/plugins/inventory/gatherers/custom/customGatherer.go (1 line): - line 153: //TODO: set a stop flag so Run thread would stop when flag is set to true agent/plugins/downloadcontent/gitresource/github/privategithub/githubclient/githubclient.go (1 line): - line 114: //TODO: Change this to GetContentType instead of IsFileContentType agent/plugins/application/application.go (1 line): - line 116: // TODO:MF: This subdirectory is only needed because we could be running multiple sets of properties for the same plugin - otherwise the orchestration directory would already be unique agent/updateutil/updateconstants/constants.go (1 line): - line 184: // TODO: Move error to a update precondition core/app/selfupdate/constants.go (1 line): - line 21: //TODO: Implement the Jitter logic for selfupdate agent/plugins/domainjoin/domainjoin_windows.go (1 line): - line 190: // TODO:MF: Why is output a string that we parse to determine if a reboot is needed? Can we shell out and run a command instead of using the updateutil approach? agent/fileutil/filemanager/filemanager.go (1 line): - line 15: // TODO: This package is a start to migration of the fileutil code to be inside an interface for better mocking. agent/messageservice/interactor/mdsinteractor/mdsinteractor.go (1 line): - line 547: // TODO: check if the message is scheduled, otherwise throw error back to MDS agent/longrunning/manager/coremodule.go (1 line): - line 376: // TODO need to check the folder agent/plugins/configurepackage/configurepackage_deps.go (1 line): - line 25: // TODO:MF: This should be able to go away when localpackages has encapsulated all filesystem access agent/plugins/configurepackage/birdwatcher/birdwatcherarchive/birdwatcherarchive.go (1 line): - line 44: // TODO: Add a SetManifest method for PackageArchive to avoid the birdwatcherManifest in the constructor. agent/plugins/configurepackage/envdetect/osdetect/osdetect_unix.go (1 line): - line 151: // TODO: Shell special characters ("$", quotes, backslash, backtick) must be escaped with backslashes agent/session/plugins/sessionplugin/sessionplugin.go (1 line): - line 122: // TODO: make encryption configurable for port plugin agent/plugins/configurepackage/birdwatcher/documentarchive/documentarchive.go (1 line): - line 277: //TODO: add check for docVersion agent/plugins/runscript/runscript.go (1 line): - line 163: // TODO:MF: This subdirectory is only needed because we could be running multiple sets of properties for the same plugin - otherwise the orchestration directory would already be unique agent/log/ssmlog/cloudwatchlogs_receiver.go (1 line): - line 80: //TODO: Trigger the publisher to empty queue common/identity/credentialproviders/onpremprovider/role_provider.go (1 line): - line 57: // TODO: When amazon-ssm-agent starts using the aws-sdk, make the executableToRotateKey always be amazon-ssm-agent agent/plugins/downloadcontent/s3resource/deps.go (1 line): - line 33: // TODO: Refactor the code to merge the s3 capabilities to one package agent/startup/startup_unix.go (1 line): - line 42: // TODO: Check if is EC2 identity type instead of calling imds, first confirm if onprem on ec2 should be allowed agent/association/service/service.go (1 line): - line 311: // TODO: add a retry here core/executor/executor.go (1 line): - line 74: //TODO: support environment variable common/filewatcherbasedipc/filewatcherchannel_unix.go (1 line): - line 35: //TODO: Should test various platforms by removing the below Remove() as it is being called inside Close() again. Following the previous developer for now based on the above comment. agent/plugins/configurepackage/trace/trace.go (1 line): - line 300: // TODO: detect subtraces extra/aws-sdk-go/private/protocol/idempotency.go (1 line): - line 59: // TODO handle error agent/plugins/inventory/datauploader/optimizer.go (1 line): - line 34: //TODO: add unit tests agent/longrunning/manager/invoke.go (1 line): - line 85: // TODO cannot check if string is a valid json for cloudwatch agent/longrunning/plugin/rundaemon/rundaemon_unix.go (1 line): - line 43: return false // TODO:DAEMON check to see if process is alive (false for now to force regular restarts and see the logs agent/runcommand/reply.go (1 line): - line 37: DocumentTraceOutput: "", // TODO: Fill me appropriately extra/aws-sdk-go/private/model/api/passes.go (1 line): - line 318: // FIXME SNS has lower and uppercased shape names with the same name, agent/log/logger/eventlog.go (1 line): - line 376: if newObj, created := createUpdateEventCounter(eventCounterObj, scanner.Text(), offset); created { // TODO when file grows pass line number to createUpdateEventCounter and break agent/plugins/inventory/gatherers/network/dataProvider_windows.go (1 line): - line 70: // TODO: current implementation only allows 1 dns server address, gateway address per network interface agent/framework/processor/executer/iohandler/iomodule/fileS3.go (1 line): - line 135: //TODO Add unit test to test maxRetry logic agent/plugins/configurepackage/ssminstaller/deps.go (1 line): - line 56: // TODO Add parameters extra/aws-sdk-go/private/protocol/eventstream/eventstreamapi/signer.go (1 line): - line 33: // TODO: Need to pass down logging agent/session/plugins/singlecommand/singlecommand.go (1 line): - line 46: // TODO: change to default to require handshake once InteractiveCommands plugin enforces handshake.