本文整理汇总了Golang中github.com/zenoss/glog.Errorf函数的典型用法代码示例。如果您正苦于以下问题:Golang Errorf函数的具体用法?Golang Errorf怎么用?Golang Errorf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Errorf函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: GetServiceLogs
func (this *ControlPlaneDao) GetServiceLogs(serviceID string, logs *string) error {
glog.V(3).Info("ControlPlaneDao.GetServiceLogs serviceID=", serviceID)
var serviceStates []servicestate.ServiceState
if err := this.GetServiceStates(serviceID, &serviceStates); err != nil {
glog.Errorf("ControlPlaneDao.GetServiceLogs failed: %v", err)
return err
}
if len(serviceStates) == 0 {
glog.V(1).Info("Unable to find any running services for service:", serviceID)
return nil
}
serviceState := serviceStates[0]
endpoint := fmt.Sprintf("%s:%d", serviceState.HostIP, this.rpcPort)
agentClient, err := agent.NewClient(endpoint)
if err != nil {
glog.Errorf("could not create client to %s", endpoint)
return err
}
defer agentClient.Close()
if mylogs, err := agentClient.GetDockerLogs(serviceState.DockerID); err != nil {
glog.Errorf("could not get docker logs from agent client: %s", err)
return err
} else {
*logs = mylogs
}
return nil
}
示例2: RemoveService
func (f *Facade) RemoveService(ctx datastore.Context, id string) error {
store := f.serviceStore
return f.walkServices(ctx, id, true, func(svc *service.Service) error {
// remove all address assignments
for _, endpoint := range svc.Endpoints {
if assignment, err := f.FindAssignmentByServiceEndpoint(ctx, svc.ID, endpoint.Name); err != nil {
glog.Errorf("Could not find address assignment %s for service %s (%s): %s", endpoint.Name, svc.Name, svc.ID, err)
return err
} else if assignment != nil {
if err := f.RemoveAddressAssignment(ctx, assignment.ID); err != nil {
glog.Errorf("Could not remove address assignment %s from service %s (%s): %s", endpoint.Name, svc.Name, svc.ID, err)
return err
}
}
endpoint.RemoveAssignment()
}
if err := zkAPI(f).RemoveService(svc); err != nil {
glog.Errorf("Could not remove service %s (%s) from zookeeper: %s", svc.Name, svc.ID, err)
return err
}
if err := store.Delete(ctx, svc.ID); err != nil {
glog.Errorf("Error while removing service %s (%s): %s", svc.Name, svc.ID, err)
return err
}
return nil
})
}
示例3: ValidEntity
//ValidEntity validates Host fields
func (h *Host) ValidEntity() error {
glog.V(4).Info("Validating host")
//if err := validation.ValidHostID(entity.ID); err != nil {
// return fmt.Errorf("invalid hostid:'%s' for host Name:'%s' IP:%s", entity.ID, entity.Name, entity.IPAddr)
//}
trimmedID := strings.TrimSpace(h.ID)
violations := validation.NewValidationError()
violations.Add(validation.NotEmpty("Host.ID", h.ID))
violations.Add(validation.ValidHostID(h.ID))
violations.Add(validation.StringsEqual(h.ID, trimmedID, "leading and trailing spaces not allowed for host id"))
violations.Add(validation.ValidPort(h.RPCPort))
violations.Add(validation.NotEmpty("Host.PoolID", h.PoolID))
violations.Add(validation.IsIP(h.IPAddr))
//TODO: what should we be validating here? It doesn't seem to work for
glog.V(4).Infof("Validating IPAddr %v for host %s", h.IPAddr, h.ID)
ipAddr, err := net.ResolveIPAddr("ip4", h.IPAddr)
if err != nil {
glog.Errorf("Could not resolve: %s to an ip4 address: %v", h.IPAddr, err)
violations.Add(err)
} else if ipAddr.IP.IsLoopback() {
glog.Errorf("Can not use %s as host address because it is a loopback address", h.IPAddr)
violations.Add(errors.New("host ip can not be a loopback address"))
}
if len(violations.Errors) > 0 {
return violations
}
return nil
}
示例4: getServiceState
// getServiceState gets the service state for a serviceID matching the instance ID specified
func getServiceState(conn coordclient.Connection, serviceID, instanceIDStr string) (*servicestate.ServiceState, error) {
tmpID, err := strconv.Atoi(instanceIDStr)
if err != nil {
glog.Errorf("Unable to interpret InstanceID: %s", instanceIDStr)
return nil, fmt.Errorf("endpoint.go getServiceState failed: %v", err)
}
instanceID := int(tmpID)
for {
serviceStates, err := getServiceStates(conn, serviceID)
if err != nil {
glog.Errorf("Unable to retrieve running service (%s) states: %v", serviceID, err)
return nil, fmt.Errorf("endpoint.go getServiceState zzk.GetServiceStates failed: %v", err)
}
for ii, ss := range serviceStates {
if ss.InstanceID == instanceID && ss.PrivateIP != "" {
return &serviceStates[ii], nil
}
}
glog.V(2).Infof("Polling to retrieve service state instanceID:%d with valid PrivateIP", instanceID)
time.Sleep(1 * time.Second)
}
return nil, fmt.Errorf("unable to retrieve service state")
}
示例5: processTenantEndpoint
// processTenantEndpoint updates the addresses for an imported endpoint
func (c *Controller) processTenantEndpoint(conn coordclient.Connection, parentPath string, hostContainerIDs ...string) {
glog.V(2).Infof("processTenantEndpoint: parentPath:%s hostContainerIDs: %v", parentPath, hostContainerIDs)
// update the proxy for this tenant endpoint
endpointRegistry, err := registry.CreateEndpointRegistry(conn)
if err != nil {
glog.Errorf("Could not get EndpointRegistry. Endpoints not registered: %v", err)
return
}
parts := strings.Split(parentPath, "/")
tenantEndpointID := parts[len(parts)-1]
if ep := c.getMatchingEndpoint(tenantEndpointID); ep != nil {
endpoints := make([]dao.ApplicationEndpoint, len(hostContainerIDs))
for ii, hostContainerID := range hostContainerIDs {
path := fmt.Sprintf("%s/%s", parentPath, hostContainerID)
endpointNode, err := endpointRegistry.GetItem(conn, path)
if err != nil {
glog.Errorf("error getting endpoint node at %s: %v", path, err)
continue
}
endpoints[ii] = endpointNode.ApplicationEndpoint
if ep.port != 0 {
glog.V(2).Infof("overriding ProxyPort with imported port:%v for endpoint: %+v", ep.port, endpointNode)
endpoints[ii].ProxyPort = ep.port
} else {
glog.V(2).Infof("not overriding ProxyPort with imported port:%v for endpoint: %+v", ep.port, endpointNode)
endpoints[ii].ProxyPort = endpoints[ii].ContainerPort
}
}
c.setProxyAddresses(tenantEndpointID, endpoints, ep.virtualAddress, ep.purpose)
}
}
示例6: RestoreIPs
func (f *Facade) RestoreIPs(ctx datastore.Context, svc service.Service) error {
for _, ep := range svc.Endpoints {
if ep.AddressAssignment.IPAddr != "" {
if assign, err := f.FindAssignmentByServiceEndpoint(ctx, svc.ID, ep.Name); err != nil {
glog.Errorf("Could not look up address assignment %s for service %s (%s): %s", ep.Name, svc.Name, svc.ID, err)
return err
} else if assign == nil || !assign.EqualIP(ep.AddressAssignment) {
ip, err := f.getManualAssignment(ctx, svc.PoolID, ep.AddressAssignment.IPAddr, ep.AddressConfig.Port)
if err != nil {
glog.Warningf("Could not assign ip (%s) to endpoint %s for service %s (%s): %s", ep.AddressAssignment.IPAddr, ep.Name, svc.Name, svc.ID, err)
continue
}
assign = &addressassignment.AddressAssignment{
AssignmentType: ip.Type,
HostID: ip.HostID,
PoolID: svc.PoolID,
IPAddr: ip.IP,
Port: ep.AddressConfig.Port,
ServiceID: svc.ID,
EndpointName: ep.Name,
}
if _, err := f.assign(ctx, *assign); err != nil {
glog.Errorf("Could not restore address assignment for %s of service %s at %s:%d: %s", assign.EndpointName, assign.ServiceID, assign.IPAddr, assign.Port, err)
return err
}
glog.Infof("Restored address assignment for endpoint %s of service %s at %s:%d", assign.EndpointName, assign.ServiceID, assign.IPAddr, assign.Port)
} else {
glog.Infof("Endpoint %s for service %s (%s) already assigned; skipping", assign.EndpointName, assign.ServiceID)
}
}
}
return nil
}
示例7: run
// Run() an instance of this container and return it's exec.Command reference and a
// channel that sends the exit code, when the container exits
func (c *Container) run() (*exec.Cmd, chan error) {
// the container name is semi random because containers can get wedged
// in docker and can not be removed until a reboot (or aufs trickery)
containerName := c.Name + "-" + uuid()
exitChan := make(chan error, 1)
args := make([]string, 0)
args = append(args, "run", "-rm", "-name", containerName)
// attach all exported ports
for _, port := range c.Ports {
args = append(args, "-p", fmt.Sprintf("%d:%d", port, port))
}
// attach resources directory to all containers
args = append(args, "-v", resourcesDir()+":"+"/usr/local/serviced/resources")
// attach all exported volumes
for name, volume := range c.Volumes {
hostDir := path.Join(c.VolumesDir(), c.Name, name)
if exists, _ := isDir(hostDir); !exists {
if err := os.MkdirAll(hostDir, 0777); err != nil {
glog.Errorf("could not create %s on host: %s", hostDir, err)
exitChan <- err
return nil, exitChan
}
}
args = append(args, "-v", hostDir+":"+volume)
}
// set the image and command to run
args = append(args, c.Repo+":"+c.Tag, "/bin/sh", "-c", c.Command)
glog.V(1).Infof("Executing docker %s", args)
var cmd *exec.Cmd
tries := 5
var err error
for {
if tries > 0 {
cmd = exec.Command("docker", args...)
if err := cmd.Start(); err != nil {
glog.Errorf("Could not start: %s", c.Name)
c.stop()
c.rm()
time.Sleep(time.Second * 1)
} else {
break
}
} else {
exitChan <- err
return cmd, exitChan
}
tries = -1
}
go func() {
exitChan <- cmd.Wait()
}()
return cmd, exitChan
}
示例8: restUpdateHost
//restUpdateHost updates a host. Request input is host.Host
func restUpdateHost(w *rest.ResponseWriter, r *rest.Request, ctx *requestContext) {
hostID, err := url.QueryUnescape(r.PathParam("hostId"))
if err != nil {
restBadRequest(w, err)
return
}
glog.V(3).Infof("Received update request for %s", hostID)
var payload host.Host
err = r.DecodeJsonPayload(&payload)
if err != nil {
glog.V(1).Infof("Could not decode host payload: %v", err)
restBadRequest(w, err)
return
}
masterClient, err := ctx.getMasterClient()
if err != nil {
glog.Errorf("Unable to add host: %v", err)
restServerError(w, err)
return
}
err = masterClient.UpdateHost(payload)
if err != nil {
glog.Errorf("Unable to update host: %v", err)
restServerError(w, err)
return
}
glog.V(1).Info("Updated host ", hostID)
w.WriteJson(&simpleResponse{"Updated host", hostLinks(hostID)})
}
示例9: restGetAllRunning
func restGetAllRunning(w *rest.ResponseWriter, r *rest.Request, client *node.ControlClient) {
var services []dao.RunningService
err := client.GetRunningServices(&empty, &services)
if err != nil {
glog.Errorf("Could not get services: %v", err)
restServerError(w, err)
return
}
if services == nil {
glog.V(3).Info("Services was nil, returning empty list instead")
services = []dao.RunningService{}
}
for ii, rsvc := range services {
var svc service.Service
if err := client.GetService(rsvc.ServiceID, &svc); err != nil {
glog.Errorf("Could not get services: %v", err)
restServerError(w, err)
}
fillBuiltinMetrics(&svc)
services[ii].MonitoringProfile = svc.MonitoringProfile
}
services = append(services, getIRS()...)
glog.V(2).Infof("Return %d running services", len(services))
w.WriteJson(&services)
}
示例10: fillBuiltinMetrics
// fillBuiltinMetrics adds internal metrics to the monitoring profile
func fillBuiltinMetrics(svc *service.Service) {
if strings.HasPrefix(svc.ID, "isvc-") {
return
}
if svc.MonitoringProfile.MetricConfigs == nil {
builder, err := domain.NewMetricConfigBuilder("/metrics/api/performance/query", "POST")
if err != nil {
glog.Errorf("Could not create builder to add internal metrics: %s", err)
return
}
config, err := builder.Config("metrics", "metrics", "metrics", "-1h")
if err != nil {
glog.Errorf("could not create metric config for internal metrics: %s", err)
}
svc.MonitoringProfile.MetricConfigs = []domain.MetricConfig{*config}
}
index, found := findInternalMetricConfig(svc)
if !found {
glog.Errorf("should have been able to find internal metrics config")
return
}
config := &svc.MonitoringProfile.MetricConfigs[index]
removeInternalMetrics(config)
removeInternalGraphConfigs(svc)
if len(svc.Startup) > 2 {
addInternalMetrics(config)
addInternalGraphConfigs(svc)
}
}
示例11: CheckRunningVHost
func (z *zkf) CheckRunningVHost(vhostName, serviceID string) error {
rootBasedConnection, err := zzk.GetLocalConnection("/")
if err != nil {
return err
}
vr, err := zkregistry.VHostRegistry(rootBasedConnection)
if err != nil {
glog.Errorf("Error getting vhost registry: %v", err)
return err
}
vhostEphemeralNodes, err := vr.GetVHostKeyChildren(rootBasedConnection, vhostName)
if err != nil {
glog.Errorf("GetVHostKeyChildren failed %v: %v", vhostName, err)
return err
}
if len(vhostEphemeralNodes) > 0 {
if vhost := vhostEphemeralNodes[0]; vhost.ServiceID != serviceID {
err := fmt.Errorf("virtual host %s is already running under service %s", vhostName, vhost.ServiceID)
return err
}
}
return nil
}
示例12: validateService
// validate the provided service
func (f *Facade) validateService(ctx datastore.Context, serviceId string, autoLaunch bool) error {
//TODO: create map of IPs to ports and ensure that an IP does not have > 1 process listening on the same port
visitor := func(svc *service.Service) error {
// validate the service is ready to start
err := f.validateServicesForStarting(ctx, svc)
if err != nil {
glog.Errorf("services failed validation for starting")
return err
}
for _, ep := range svc.GetServiceVHosts() {
for _, vh := range ep.VHosts {
//check that vhosts aren't already started elsewhere
if err := zkAPI(f).CheckRunningVHost(vh, svc.ID); err != nil {
return err
}
}
}
return nil
}
// traverse all the services
if err := f.walkServices(ctx, serviceId, autoLaunch, visitor); err != nil {
glog.Errorf("unable to walk services for service %s", serviceId)
return err
}
return nil
}
示例13: GetRunningServicesForService
func (this *ControlPlaneDao) GetRunningServicesForService(serviceID string, services *[]dao.RunningService) error {
// we initialize the data container to something here in case it has not been initialized yet
*services = make([]dao.RunningService, 0)
poolID, err := this.facade.GetPoolForService(datastore.Get(), serviceID)
if err != nil {
glog.Errorf("Unable to get service %v: %v", serviceID, err)
return err
}
poolBasedConn, err := zzk.GetLocalConnection(zzk.GeneratePoolPath(poolID))
if err != nil {
glog.Errorf("Error in getting a connection based on pool %v: %v", poolID, err)
return err
}
svcs, err := zkservice.LoadRunningServicesByService(poolBasedConn, serviceID)
if err != nil {
glog.Errorf("LoadRunningServicesByService failed (conn: %+v serviceID: %v): %v", poolBasedConn, serviceID, err)
return err
}
for _, svc := range svcs {
*services = append(*services, svc)
}
return nil
}
示例14: remove
func (svc *IService) remove(notify chan<- int) {
defer close(notify)
ctr, err := docker.FindContainer(svc.name())
if err == docker.ErrNoSuchContainer {
return
} else if err != nil {
glog.Errorf("Could not get isvc container %s", svc.Name)
return
}
// report the log output
if output, err := exec.Command("docker", "logs", "--tail", "1000", ctr.ID).CombinedOutput(); err != nil {
glog.Warningf("Could not get logs for container %s", ctr.Name)
} else {
glog.V(1).Infof("Exited isvc %s:\n %s", svc.Name, string(output))
}
// kill the container if it is running
if ctr.IsRunning() {
glog.Warningf("isvc %s is still running; killing", svc.Name)
ctr.Kill()
}
// get the exit code
rc, _ := ctr.Wait(time.Second)
defer func() { notify <- rc }()
// delete the container
if err := ctr.Delete(true); err != nil {
glog.Errorf("Could not remove isvc %s: %s", ctr.Name, err)
}
}
示例15: kickOffHealthChecks
func (c *Controller) kickOffHealthChecks(healthExit chan struct{}) {
client, err := node.NewLBClient(c.options.ServicedEndpoint)
if err != nil {
glog.Errorf("Could not create a client to endpoint: %s, %s", c.options.ServicedEndpoint, err)
return
}
defer client.Close()
var healthChecks map[string]domain.HealthCheck
instanceID, err := strconv.Atoi(c.options.Service.InstanceID)
if err != nil {
glog.Errorf("Invalid instance from instanceID:%s", c.options.Service.InstanceID)
return
}
err = client.GetHealthCheck(node.HealthCheckRequest{
c.options.Service.ID, instanceID}, &healthChecks)
if err != nil {
glog.Errorf("Error getting health checks: %s", err)
return
}
for key, mapping := range healthChecks {
glog.Infof("Kicking off health check %s.", key)
glog.Infof("Setting up health check: %s", mapping.Script)
timeout := mapping.Timeout
if timeout == 0 {
timeout = time.Second * 30
}
go c.handleHealthCheck(key, mapping.Script, mapping.Interval, timeout, healthExit)
}
return
}