本文整理匯總了Golang中github.com/aws/amazon-ssm-agent/agent/log.T類的典型用法代碼示例。如果您正苦於以下問題:Golang T類的具體用法?Golang T怎麽用?Golang T使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了T類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: initializeBookkeepingLocations
// initializeBookkeepingLocations - initializes all folder locations required for bookkeeping
func initializeBookkeepingLocations(log logger.T, instanceID string) bool {
//Create folders pending, current, completed, corrupt under the location DefaultLogDirPath/<instanceId>
log.Info("Initializing bookkeeping folders")
initStatus := true
folders := []string{
appconfig.DefaultLocationOfPending,
appconfig.DefaultLocationOfCurrent,
appconfig.DefaultLocationOfCompleted,
appconfig.DefaultLocationOfCorrupt}
for _, folder := range folders {
directoryName := path.Join(appconfig.DefaultDataStorePath,
instanceID,
appconfig.DefaultCommandRootDirName,
appconfig.DefaultLocationOfState,
folder)
err := fileutil.MakeDirs(directoryName)
if err != nil {
log.Errorf("Encountered error while creating folders for internal state management. %v", err)
initStatus = false
break
}
}
return initStatus
}
示例2: MoveCommandState
// MoveCommandState moves the CommandState object
func MoveCommandState(log log.T, commandID, instanceID, srcLocationFolder, dstLocationFolder string) {
//get a lock for documentID specific lock
lockDocument(commandID)
absoluteSource := path.Join(appconfig.DefaultDataStorePath,
instanceID,
appconfig.DefaultCommandRootDirName,
appconfig.DefaultLocationOfState,
srcLocationFolder)
absoluteDestination := path.Join(appconfig.DefaultDataStorePath,
instanceID,
appconfig.DefaultCommandRootDirName,
appconfig.DefaultLocationOfState,
dstLocationFolder)
if s, err := fileutil.MoveFile(commandID, absoluteSource, absoluteDestination); s && err == nil {
log.Debugf("moved file %v from %v to %v successfully", commandID, srcLocationFolder, dstLocationFolder)
} else {
log.Debugf("moving file %v from %v to %v failed with error %v", commandID, srcLocationFolder, dstLocationFolder, err)
}
//release documentID specific lock - before deleting the entry from the map
unlockDocument(commandID)
//delete documentID specific lock if document has finished executing. This is to avoid documentLock growing too much in memory.
//This is done by ensuring that as soon as document finishes executing it is removed from documentLock
//Its safe to assume that document has finished executing if it is being moved to appconfig.DefaultLocationOfCompleted
if dstLocationFolder == appconfig.DefaultLocationOfCompleted {
deleteLock(commandID)
}
}
示例3: process
// process launches one job in a separate go routine and waits
// for either the job to finish or for a cancel to be requested.
// If cancel is requested, this function waits for some time to allow the
// job to complete. If the job does not complete by the timeout, the go routine
// of the job is abandoned, and this function returns.
func process(log log.T, job Job, cancelFlag *ChanneledCancelFlag, cancelWait time.Duration, clock times.Clock) {
// Make a buffered channel to avoid blocking on send. This helps
// in case the job fails to cancel on time and we give up on it.
// If the job finally ends, it will succeed to send a signal
// on the channel and then it will terminate. This will allow
// the garbage collector to collect the go routine's resources
// and the channel.
doneChan := make(chan struct{}, 1)
go runJob(log, func() { job(cancelFlag) }, doneChan)
done := waitEither(doneChan, cancelFlag.ch)
if done {
// task done, set the flag to wake up waiting routines
cancelFlag.Set(Completed)
return
}
log.Debugf("Execution has been canceled, waiting up to %v to finish", cancelWait)
done = waitEither(doneChan, clock.After(cancelWait))
if done {
// job completed within cancel waiting window
cancelFlag.Set(Completed)
return
}
log.Debugf("Job failed to terminate within %v!", cancelWait)
}
示例4: LatestVersion
// LatestVersion returns latest version for specific package
func (m *Manifest) LatestVersion(log log.T, context *updateutil.InstanceContext, packageName string) (result string, err error) {
var version = minimumVersion
var compareResult = 0
for _, p := range m.Packages {
if p.Name == packageName {
for _, f := range p.Files {
if f.Name == context.FileName(packageName) {
for _, v := range f.AvailableVersions {
if compareResult, err = updateutil.VersionCompare(v.Version, version); err != nil {
return version, err
}
if compareResult > 0 {
version = v.Version
}
}
}
}
}
}
if version == minimumVersion {
log.Debugf("Filename: %v", context.FileName(packageName))
log.Debugf("Package Name: %v", packageName)
log.Debugf("Manifest: %v", m)
return version, fmt.Errorf("cannot find the latest version for package %v", packageName)
}
return version, nil
}
示例5: validateManifest
// validateManifest makes sure all the fields are provided.
func validateManifest(log log.T, parsedManifest *Manifest, context *updateutil.InstanceContext, packageName string) error {
if len(parsedManifest.URIFormat) == 0 {
return fmt.Errorf("folder format cannot be null in the Manifest file")
}
fileName := context.FileName(packageName)
foundPackage := false
foundFile := false
for _, p := range parsedManifest.Packages {
if p.Name == packageName {
log.Infof("found package %v", packageName)
foundPackage = true
for _, f := range p.Files {
if f.Name == fileName {
foundFile = true
if len(f.AvailableVersions) == 0 {
return fmt.Errorf("at least one available version is required for the %v", fileName)
}
log.Infof("found file %v", fileName)
break
}
}
}
}
if !foundPackage {
return fmt.Errorf("cannot find the %v information in the Manifest file", packageName)
}
if !foundFile {
return fmt.Errorf("cannot find the %v information in the Manifest file", fileName)
}
return nil
}
示例6: HandleAwsError
// HandleAwsError logs an AWS error.
func HandleAwsError(log log.T, err error, stopPolicy *StopPolicy) {
if err != nil {
// notice that we're using 1, so it will actually log the where
// the error happened, 0 = this function, we don't want that.
pc, fn, line, _ := runtime.Caller(1)
log.Debugf("error in %s[%s:%d] %v", runtime.FuncForPC(pc).Name(), fn, line, err)
// In case this is aws error, update the stop policy as well.
if aErr, ok := err.(awserr.Error); ok {
// Generic AWS Error with Code, Message, and original error (if any)
log.Debugf("AWS error. Code: %v, Message: %v, origerror: %v ", aErr.Code(), aErr.Message(), aErr.OrigErr())
// special treatment for Timeout exception - as this is expected
if aErr.Code() == "RequestError" && aErr.OrigErr() != nil && strings.Contains(aErr.OrigErr().Error(), "Client.Timeout") {
// resetting the error count to 0 - as these exceptions are all expected
if stopPolicy != nil {
resetStopPolicy(stopPolicy)
}
return
}
}
log.Errorf("error when calling AWS APIs. error details - %v", err)
if stopPolicy != nil {
log.Infof("increasing error count by 1")
stopPolicy.AddErrorCount(1)
}
} else {
// there is no error,
resetStopPolicy(stopPolicy)
}
}
示例7: installAgent
// install executes the install script for the specific version of agent
func installAgent(mgr *updateManager, log log.T, version string, context *UpdateContext) (err error) {
log.Infof("Initiating %v %v installation", context.Current.PackageName, version)
// find the path for the install script
installerPath := updateutil.InstallerFilePath(
context.Current.UpdateRoot,
context.Current.PackageName,
version)
// calculate work directory
workDir := updateutil.UpdateArtifactFolder(
context.Current.UpdateRoot,
context.Current.PackageName,
version)
// Install version
if err = mgr.util.ExeCommand(
log,
installerPath,
workDir,
context.Current.UpdateRoot,
context.Current.StdoutFileName,
context.Current.StderrFileName,
false); err != nil {
return err
}
log.Infof("%v %v installed successfully", context.Current.PackageName, version)
return nil
}
示例8: SendCommand
func (svc *sdkService) SendCommand(log log.T,
documentName string,
instanceIDs []string,
parameters map[string][]*string,
timeoutSeconds *int64,
outputS3BucketName *string,
outputS3KeyPrefix *string) (response *ssm.SendCommandOutput, err error) {
params := ssm.SendCommandInput{
DocumentName: aws.String(documentName),
InstanceIds: makeAwsStrings(instanceIDs),
Comment: aws.String("Comment"),
OutputS3BucketName: outputS3BucketName,
OutputS3KeyPrefix: outputS3KeyPrefix,
Parameters: parameters,
TimeoutSeconds: timeoutSeconds,
}
log.Debug("SendCommand params:", params)
response, err = svc.sdk.SendCommand(¶ms)
if err != nil {
sdkutil.HandleAwsError(log, err, ssmStopPolicy)
return
}
log.Debug("SendCommand Response", response)
return
}
示例9: processFingerprint
// processFingerprint handles flags related to the fingerprint category
func processFingerprint(log logger.T) (exitCode int) {
if err := fingerprint.SetSimilarityThreshold(similarityThreshold); err != nil {
log.Errorf("Error setting the SimilarityThreshold. %v", err)
return 1
}
log.Infof("Fingerprint SimilarityTHreshold set to %v", similarityThreshold)
return 0
}
示例10: clearRegistration
// clearRegistration clears any existing registration data
func clearRegistration(log logger.T) (exitCode int) {
err := registration.UpdateServerInfo("", "", "", "")
if err == nil {
log.Info("Registration information has been removed from the instance.")
return 0
}
log.Errorf("error clearing the instance registration information. %v\nTry running as sudo/administrator.", err)
return 1
}
示例11: run
// Run as a single process. Used by Unix systems and when running agent from console.
func run(log logger.T) {
// run core manager
cpm, err := start(log, instanceIDPtr, regionPtr)
if err != nil {
log.Errorf("error occured when starting amazon-ssm-agent: %v", err)
return
}
blockUntilSignaled(log)
stop(log, cpm)
}
示例12: RemoveData
// RemoveData deletes the fileName from locationFolder under defaultLogDir/instanceID
func RemoveData(log log.T, commandID, instanceID, locationFolder string) {
absoluteFileName := getCmdStateFileName(commandID, instanceID, locationFolder)
err := fileutil.DeleteFile(absoluteFileName)
if err != nil {
log.Errorf("encountered error %v while deleting file %v", err, absoluteFileName)
} else {
log.Debugf("successfully deleted file %v", absoluteFileName)
}
}
示例13: killProcessOnTimeout
func killProcessOnTimeout(log log.T, command *exec.Cmd, timer *time.Timer) {
<-timer.C
log.Debug("Process exceeded timeout. Attempting to kill process!")
// task has been exceeded the allowed execution timeout, kill process
if err := command.Process.Kill(); err != nil {
log.Error(err)
return
}
log.Debug("Done kill process!")
}
示例14: processSendReply
func processSendReply(log log.T, messageID string, mdsService service.Service, payloadDoc messageContracts.SendReplyPayload, processorStopPolicy *sdkutil.StopPolicy) {
payloadB, err := json.Marshal(payloadDoc)
if err != nil {
log.Error("could not marshal reply payload!", err)
}
payload := string(payloadB)
log.Info("Sending reply ", jsonutil.Indent(payload))
err = mdsService.SendReply(log, messageID, payload)
if err != nil {
sdkutil.HandleAwsError(log, err, processorStopPolicy)
}
}
示例15: killProcessOnTimeout
// killProcessOnTimeout waits for a timeout.
// When the timeout is reached, this method kills the underlying
// process of the command. This will unblock the command.Wait() call.
// If the task completed successfully this method returns with no action.
func killProcessOnTimeout(log log.T, command *exec.Cmd, timer *time.Timer) {
<-timer.C
log.Debug("Process exceeded timeout. Attempting to stop process.")
// task has been exceeded the allowed execution timeout, kill process
if err := killProcess(command.Process); err != nil {
log.Error(err)
return
}
log.Debug("Process stopped successfully")
}