本文整理汇总了Golang中github.com/cloudfoundry/bosh-utils/errors.Error函数的典型用法代码示例。如果您正苦于以下问题:Golang Error函数的具体用法?Golang Error怎么用?Golang Error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: determineParams
func (a DrainAction) determineParams(drainType DrainType, currentSpec boshas.V1ApplySpec, newSpecs []boshas.V1ApplySpec) (boshdrain.ScriptParams, error) {
var newSpec *boshas.V1ApplySpec
var params boshdrain.ScriptParams
if len(newSpecs) > 0 {
newSpec = &newSpecs[0]
}
switch drainType {
case DrainTypeStatus:
// Status was used in the past when dynamic drain was implemented in the Director.
// Now that we implement it in the agent, we should never get a call for this type.
return params, bosherr.Error("Unexpected call with drain type 'status'")
case DrainTypeUpdate:
if newSpec == nil {
return params, bosherr.Error("Drain update requires new spec")
}
params = boshdrain.NewUpdateParams(currentSpec, *newSpec)
case DrainTypeShutdown:
err := a.notifier.NotifyShutdown()
if err != nil {
return params, bosherr.WrapError(err, "Notifying shutdown")
}
params = boshdrain.NewShutdownParams(currentSpec, newSpec)
}
return params, nil
}
示例2: Run
func (r concreteRunner) Run(action Action, payloadBytes []byte) (value interface{}, err error) {
payloadArgs, err := r.extractJSONArguments(payloadBytes)
if err != nil {
err = bosherr.WrapError(err, "Extracting json arguments")
return
}
actionValue := reflect.ValueOf(action)
runMethodValue := actionValue.MethodByName("Run")
if runMethodValue.Kind() != reflect.Func {
err = bosherr.Error("Run method not found")
return
}
runMethodType := runMethodValue.Type()
if r.invalidReturnTypes(runMethodType) {
err = bosherr.Error("Run method should return a value and an error")
return
}
methodArgs, err := r.extractMethodArgs(runMethodType, payloadArgs)
if err != nil {
err = bosherr.WrapError(err, "Extracting method arguments from payload")
return
}
values := runMethodValue.Call(methodArgs)
return r.extractReturns(values)
}
示例3: findRootDevicePathAndNumber
func (p linux) findRootDevicePathAndNumber() (string, int, error) {
mounts, err := p.diskManager.GetMountsSearcher().SearchMounts()
if err != nil {
return "", 0, bosherr.WrapError(err, "Searching mounts")
}
for _, mount := range mounts {
if mount.MountPoint == "/" && strings.HasPrefix(mount.PartitionPath, "/dev/") {
p.logger.Debug(logTag, "Found root partition: `%s'", mount.PartitionPath)
stdout, _, _, err := p.cmdRunner.RunCommand("readlink", "-f", mount.PartitionPath)
if err != nil {
return "", 0, bosherr.WrapError(err, "Shelling out to readlink")
}
rootPartition := strings.Trim(stdout, "\n")
p.logger.Debug(logTag, "Symlink is: `%s'", rootPartition)
validRootPartition := regexp.MustCompile(`^/dev/[a-z]+\d$`)
if !validRootPartition.MatchString(rootPartition) {
return "", 0, bosherr.Error("Root partition has an invalid name" + rootPartition)
}
devNum, err := strconv.Atoi(rootPartition[len(rootPartition)-1:])
if err != nil {
return "", 0, bosherr.WrapError(err, "Parsing device number failed")
}
devPath := rootPartition[:len(rootPartition)-1]
return devPath, devNum, nil
}
}
return "", 0, bosherr.Error("Getting root partition device")
}
示例4: validateJob
func (v SyntaxValidator) validateJob(job *Job) error {
if job.Name == "" {
return bosherr.Error("Missing job name")
}
if job.Template != nil {
return bosherr.Error("'template' is deprecated in favor of 'templates'")
}
err := v.validateUpdate(&job.Update)
if err != nil {
return bosherr.WrapError(err, "Update")
}
props, err := bputil.NewStringKeyed().ConvertMap(job.PropertiesRaw)
if err != nil {
return bosherr.WrapError(err, "Properties")
}
job.Properties = props
for i, na := range job.NetworkAssociations {
err := v.validateNetworkAssociation(&job.NetworkAssociations[i])
if err != nil {
return bosherr.WrapErrorf(err, "Network association %s (%d)", na.NetworkName, i)
}
}
return nil
}
示例5: findRootDevicePath
func (p linux) findRootDevicePath() (string, error) {
mounts, err := p.diskManager.GetMountsSearcher().SearchMounts()
if err != nil {
return "", bosherr.WrapError(err, "Searching mounts")
}
for _, mount := range mounts {
if mount.MountPoint == "/" && strings.HasPrefix(mount.PartitionPath, "/dev/") {
p.logger.Debug(logTag, "Found root partition: `%s'", mount.PartitionPath)
stdout, _, _, err := p.cmdRunner.RunCommand("readlink", "-f", mount.PartitionPath)
if err != nil {
return "", bosherr.WrapError(err, "Shelling out to readlink")
}
rootPartition := strings.Trim(stdout, "\n")
p.logger.Debug(logTag, "Symlink is: `%s'", rootPartition)
validRootPartition := regexp.MustCompile(`^/dev/[a-z]+1$`)
if !validRootPartition.MatchString(rootPartition) {
return "", bosherr.Error("Root partition is not the first partition")
}
return strings.Trim(rootPartition, "1"), nil
}
}
return "", bosherr.Error("Getting root partition device")
}
示例6: GetDefaultNetwork
func (r defaultNetworkResolver) GetDefaultNetwork() (boshsettings.Network, error) {
network := boshsettings.Network{}
routes, err := r.routesSearcher.SearchRoutes()
if err != nil {
return network, bosherr.WrapError(err, "Searching routes")
}
if len(routes) == 0 {
return network, bosherr.Error("No routes found")
}
for _, route := range routes {
if !route.IsDefault() {
continue
}
ip, err := r.ipResolver.GetPrimaryIPv4(route.InterfaceName)
if err != nil {
return network, bosherr.WrapErrorf(err, "Getting primary IPv4 for interface '%s'", route.InterfaceName)
}
return boshsettings.Network{
IP: ip.IP.String(),
Netmask: gonet.IP(ip.Mask).String(),
Gateway: route.Gateway,
}, nil
}
return network, bosherr.Error("Failed to find default route")
}
示例7: Validate
func (v SyntaxValidator) Validate() error {
if v.release.Name == "" {
return bosherr.Error("Missing release name")
}
if v.release.Version == "" {
return bosherr.Error("Missing release version")
}
if v.release.CommitHash == "" {
return bosherr.Error("Missing release commit_hash")
}
for i, job := range v.release.Jobs {
err := v.validateJob(&v.release.Jobs[i])
if err != nil {
return bosherr.WrapErrorf(err, "Job %s (%d)", job.Name, i)
}
}
for i, pkg := range v.release.Packages {
err := v.validatePkg(&v.release.Packages[i])
if err != nil {
return bosherr.WrapErrorf(err, "Package %s (%d)", pkg.Name, i)
}
}
return nil
}
示例8: validate
func (c Config) validate() error {
if c.AssetsDir == "" {
return bosherr.Error("Must provide non-empty assets_dir")
}
if c.ReposDir == "" {
return bosherr.Error("Must provide non-empty repos_dir")
}
err := c.EventLog.Validate()
if err != nil {
return bosherr.WrapError(err, "Validating event_log configuration")
}
if c.Blobstore.Type != bpprov.BlobstoreConfigTypeLocal {
return bosherr.Error("Blobstore type must be local")
}
err = c.Blobstore.Validate()
if err != nil {
return bosherr.WrapError(err, "Validating blobstore configuration")
}
return nil
}
示例9: buildWithoutRegistry
func (f SettingsSourceFactory) buildWithoutRegistry() (boshsettings.Source, error) {
var settingsSources []boshsettings.Source
for _, opts := range f.options.Sources {
var settingsSource boshsettings.Source
switch typedOpts := opts.(type) {
case HTTPSourceOptions:
return nil, bosherr.Error("HTTP source is not supported without registry")
case ConfigDriveSourceOptions:
settingsSource = NewConfigDriveSettingsSource(
typedOpts.DiskPaths,
typedOpts.MetaDataPath,
typedOpts.SettingsPath,
f.platform,
f.logger,
)
case FileSourceOptions:
return nil, bosherr.Error("File source is not supported without registry")
case CDROMSourceOptions:
settingsSource = NewCDROMSettingsSource(
typedOpts.FileName,
f.platform,
f.logger,
)
}
settingsSources = append(settingsSources, settingsSource)
}
return NewMultiSettingsSource(settingsSources...)
}
示例10: validate_arguments
func (c BaremetalCreator) validate_arguments(memory int, processor int, disksize int, host string, domain string, ostype string, datacenter string) error {
if memory <= 0 {
return bosherr.Errorf("memory can not be negative: %d", memory)
}
if processor <= 0 {
return bosherr.Errorf("processor can not be negative: %d", processor)
}
if disksize <= 0 {
return bosherr.Errorf("disk size can not be negative: %d", disksize)
}
if host == "" {
return bosherr.Error("host can not be empty.")
}
if domain == "" {
return bosherr.Error("domain can not be empty.")
}
if ostype == "" {
return bosherr.Error("os type can not be empty.")
}
if datacenter == "" {
return bosherr.Error("data center can not be empty.")
}
return nil
}
示例11: Precompile
// Precompile prepares release jobs to be later combined with instance properties
func (tc ConcreteTemplatesCompiler) Precompile(release bprel.Release) error {
var allPkgs []bprel.Package
for _, pkg := range release.Packages {
if pkg == nil {
// todo panic or should not be here?
return bosherr.Error("Expected release to not have nil package")
}
allPkgs = append(allPkgs, *pkg)
}
for _, pkg := range release.CompiledPackages {
if pkg == nil {
// todo panic or should not be here?
return bosherr.Error("Expected release to not have nil package")
}
allPkgs = append(allPkgs, *pkg)
}
for _, job := range release.Jobs {
jobRec, found, err := tc.jobsRepo.Find(job)
if err != nil {
return bosherr.WrapErrorf(err, "Finding job source blob %s", job.Name)
}
if !found {
blobID, fingerprint, err := tc.blobstore.Create(job.TarPath)
if err != nil {
return bosherr.WrapErrorf(err, "Creating job source blob %s", job.Name)
}
jobRec = bpjobsrepo.JobRecord{
BlobID: blobID,
SHA1: fingerprint,
}
err = tc.jobsRepo.Save(job, jobRec)
if err != nil {
return bosherr.WrapErrorf(err, "Saving job record %s", job.Name)
}
}
releaseJobRec, err := tc.tplToJobRepo.SaveForJob(release, job)
if err != nil {
return bosherr.WrapErrorf(err, "Saving release job %s", job.Name)
}
// todo associate to release instead
err = tc.runPkgsRepo.SaveAll(releaseJobRec, allPkgs)
if err != nil {
return bosherr.WrapErrorf(err, "Saving release job %s", job.Name)
}
}
return nil
}
示例12: buildWithRegistry
func (f SettingsSourceFactory) buildWithRegistry() (boshsettings.Source, error) {
var metadataServices []MetadataService
digDNSResolver := NewDigDNSResolver(f.platform.GetRunner(), f.logger)
resolver := NewRegistryEndpointResolver(digDNSResolver)
for _, opts := range f.options.Sources {
var metadataService MetadataService
switch typedOpts := opts.(type) {
case HTTPSourceOptions:
metadataService = NewHTTPMetadataService(
typedOpts.URI,
typedOpts.Headers,
typedOpts.UserDataPath,
typedOpts.InstanceIDPath,
typedOpts.SSHKeysPath,
resolver,
f.platform,
f.logger,
)
case ConfigDriveSourceOptions:
metadataService = NewConfigDriveMetadataService(
resolver,
f.platform,
typedOpts.DiskPaths,
typedOpts.MetaDataPath,
typedOpts.UserDataPath,
f.logger,
)
case FileSourceOptions:
metadataService = NewFileMetadataService(
typedOpts.MetaDataPath,
typedOpts.UserDataPath,
typedOpts.SettingsPath,
f.platform.GetFs(),
f.logger,
)
case CDROMSourceOptions:
return nil, bosherr.Error("CDROM source is not supported when registry is used")
case InstanceMetadataSourceOptions:
return nil, bosherr.Error("Instance Metadata source is not supported when registry is used")
}
metadataServices = append(metadataServices, metadataService)
}
metadataService := NewMultiSourceMetadataService(metadataServices...)
registryProvider := NewRegistryProvider(metadataService, f.platform, f.options.UseServerName, f.platform.GetFs(), f.logger)
settingsSource := NewComplexSettingsSource(metadataService, registryProvider, f.logger)
return settingsSource, nil
}
示例13: Delete
func (vm SoftLayerVM) Delete(agentID string) error {
if strings.ToUpper(common.GetOSEnvVariable("OS_RELOAD_ENABLED", "TRUE")) == "FALSE" {
if strings.ToUpper(common.GetOSEnvVariable("DEL_NOT_ALLOWED", "FALSE")) == "FALSE" {
return vm.DeleteVM()
} else {
return bosherr.Error("DEL_NOT_ALLOWED is set to TRUE, the VM deletion reqeust is refused.")
}
}
err := bslcvmpool.InitVMPoolDB(bslcvmpool.DB_RETRY_TIMEOUT, bslcvmpool.DB_RETRY_INTERVAL, vm.logger)
if err != nil {
return bosherr.WrapError(err, "Failed to initialize VM pool DB")
}
db, err := bslcvmpool.OpenDB(bslcvmpool.SQLITE_DB_FILE_PATH)
if err != nil {
return bosherr.WrapError(err, "Opening DB")
}
vmInfoDB := bslcvmpool.NewVMInfoDB(vm.id, "", "", "", "", vm.logger, db)
defer vmInfoDB.CloseDB()
err = vmInfoDB.QueryVMInfobyID(bslcvmpool.DB_RETRY_TIMEOUT, bslcvmpool.DB_RETRY_INTERVAL)
if err != nil {
return bosherr.WrapError(err, fmt.Sprintf("Failed to query VM info by given ID %d", vm.id))
}
vm.logger.Info(SOFTLAYER_VM_LOG_TAG, fmt.Sprintf("vmInfoDB.vmProperties.id is %d", vmInfoDB.VmProperties.Id))
if vmInfoDB.VmProperties.Id != 0 {
if agentID != "" {
vm.logger.Info(SOFTLAYER_VM_LOG_TAG, fmt.Sprintf("Release the VM with id %d back to the VM pool", vmInfoDB.VmProperties.Id))
vmInfoDB.VmProperties.InUse = "f"
err = vmInfoDB.UpdateVMInfoByID(bslcvmpool.DB_RETRY_TIMEOUT, bslcvmpool.DB_RETRY_INTERVAL)
if err != nil {
return bosherr.WrapError(err, fmt.Sprintf("Failed to update in_use to %s by given ID %d", vmInfoDB.VmProperties.InUse, vm.id))
} else {
return nil
}
} else {
if strings.ToUpper(common.GetOSEnvVariable("DEL_NOT_ALLOWED", "FALSE")) == "FALSE" {
return vm.DeleteVM()
} else {
return bosherr.Error("DEL_NOT_ALLOWED is set to TRUE, the VM deletion reqeust is refused.")
}
}
} else {
if strings.ToUpper(common.GetOSEnvVariable("DEL_NOT_ALLOWED", "FALSE")) == "FALSE" {
return vm.DeleteVM()
} else {
return bosherr.Error("DEL_NOT_ALLOWED is set to TRUE, the VM deletion reqeust is refused.")
}
}
}
示例14: Validate
func (c SoftLayerConfig) Validate() error {
if c.Username == "" {
return bosherr.Error("Must provide non-empty Username")
}
if c.ApiKey == "" {
return bosherr.Error("Must provide non-empty ApiKey")
}
return nil
}
示例15: validateNetworkAssociation
func (v SemanticValidator) validateNetworkAssociation(na NetworkAssociation) error {
if na.Network == nil {
return bosherr.Error("Missing associated network")
}
if na.MustHaveStaticIP && na.StaticIP == nil {
return bosherr.Error("Missing static IP assignment")
}
return nil
}