当前位置: 首页>>代码示例>>Golang>>正文


Golang Connection.CreateDir方法代码示例

本文整理汇总了Golang中github.com/control-center/serviced/coordinator/client.Connection.CreateDir方法的典型用法代码示例。如果您正苦于以下问题:Golang Connection.CreateDir方法的具体用法?Golang Connection.CreateDir怎么用?Golang Connection.CreateDir使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/control-center/serviced/coordinator/client.Connection的用法示例。


在下文中一共展示了Connection.CreateDir方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: Run

func (s *Server) Run(shutdown <-chan interface{}, conn client.Connection) error {
	node := &Node{
		Host:       *s.host,
		ExportPath: fmt.Sprintf("%s:%s", s.host.IPAddr, s.driver.ExportPath()),
		ExportTime: strconv.FormatInt(time.Now().UnixNano(), 16),
	}

	// Create the storage leader and client nodes
	if exists, _ := conn.Exists("/storage/leader"); !exists {
		conn.CreateDir("/storage/leader")
	}

	storageClientsPath := "/storage/clients"

	if exists, _ := conn.Exists(storageClientsPath); !exists {
		conn.CreateDir(storageClientsPath)
	}

	leader := conn.NewLeader("/storage/leader", node)
	leaderW, err := leader.TakeLead()
	if err != zookeeper.ErrDeadlock && err != nil {
		glog.Errorf("Could not take storage lead: %s", err)
		return err
	}

	// monitor dfs; log warnings each cycle; restart dfs if needed
	go s.monitor.MonitorDFSVolume(path.Join("/exports", s.driver.ExportPath()), s.host.IPAddr, node.ExportTime, shutdown, s.monitor.DFSVolumeMonitorPollUpdateFunc)

	// loop until shutdown event
	defer leader.ReleaseLead()

	for {
		clients, clientW, err := conn.ChildrenW(storageClientsPath)
		if err != nil {
			glog.Errorf("Could not set up watch for storage clients: %s", err)
			return err
		}

		s.monitor.SetMonitorStorageClients(conn, storageClientsPath)
		s.driver.SetClients(clients...)
		if err := s.driver.Sync(); err != nil {
			glog.Errorf("Error syncing driver: %s", err)
			return err
		}

		select {
		case e := <-clientW:
			glog.Info("storage.server: receieved event: %s", e)
		case <-leaderW:
			err := fmt.Errorf("storage.server: lost lead")
			return err
		case <-shutdown:
			return nil
		}
	}
}
开发者ID:carriercomm,项目名称:serviced,代码行数:56,代码来源:server.go

示例2: CreateEndpointRegistry

// CreateEndpointRegistry creates the endpoint registry and returns the EndpointRegistry type
// This is created in the leader, most other calls will just get that one
func CreateEndpointRegistry(conn client.Connection) (*EndpointRegistry, error) {
	path := zkEndpointsPath()
	if exists, err := zzk.PathExists(conn, path); err != nil {
		return nil, err
	} else if !exists {
		if err := conn.CreateDir(path); err != nil {
			glog.Errorf("error with CreateDir(%s) %+v", path, err)
			return nil, err
		}
	}
	return &EndpointRegistry{registryType{getPath: zkEndpointsPath, ephemeral: true}}, nil
}
开发者ID:carriercomm,项目名称:serviced,代码行数:14,代码来源:endpointregistry.go

示例3: ensureDir

func (r *registryType) ensureDir(conn client.Connection, path string) error {
	timeout := time.After(time.Second * 60)
	var err error
	for {
		err = conn.CreateDir(path)
		if err == client.ErrNodeExists || err == nil {
			return nil
		}
		select {
		case <-timeout:
			break
		default:
		}
	}
	return fmt.Errorf("could not create dir: %s", path, err)
}
开发者ID:carriercomm,项目名称:serviced,代码行数:16,代码来源:registry.go

示例4: VHostRegistry

// VHostRegistry ensures the vhost registry and returns the VhostRegistry type
func VHostRegistry(conn client.Connection) (*VhostRegistry, error) {
	path := vhostPath()

	timeout := time.After(time.Second * 60)
	var err error
	for {
		err = conn.CreateDir(path)
		if err == client.ErrNodeExists || err == nil {
			err = nil
			break
		}
		select {
		case <-timeout:
			break
		default:
		}
	}
	if err != nil {
		glog.Errorf("error with CreateDir(%s) %+v", path, err)
		return nil, fmt.Errorf("could not create dir: %s", path, err)
	}
	return &VhostRegistry{registryType{getPath: vhostPath, ephemeral: true}}, nil
}
开发者ID:eval01-tts,项目名称:serviced,代码行数:24,代码来源:vhostregistry.go


注:本文中的github.com/control-center/serviced/coordinator/client.Connection.CreateDir方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。