當前位置: 首頁>>代碼示例>>Golang>>正文


Golang p2exec.P2ExecArgs類代碼示例

本文整理匯總了Golang中github.com/square/p2/pkg/p2exec.P2ExecArgs的典型用法代碼示例。如果您正苦於以下問題:Golang P2ExecArgs類的具體用法?Golang P2ExecArgs怎麽用?Golang P2ExecArgs使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了P2ExecArgs類的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: InvokeBinScript

func (hl *Launchable) InvokeBinScript(script string) (string, error) {
	cmdPath := filepath.Join(hl.InstallDir(), "bin", script)
	_, err := os.Stat(cmdPath)
	if err != nil {
		return "", err
	}

	cgroupName := hl.CgroupName
	if hl.CgroupConfigName == "" {
		cgroupName = ""
	}
	p2ExecArgs := p2exec.P2ExecArgs{
		Command:          []string{cmdPath},
		User:             hl.RunAs,
		EnvDirs:          []string{hl.PodEnvDir, hl.EnvDir()},
		NoLimits:         hl.ExecNoLimit,
		CgroupConfigName: hl.CgroupConfigName,
		CgroupName:       cgroupName,
	}
	cmd := exec.Command(hl.P2Exec, p2ExecArgs.CommandLine()...)
	buffer := bytes.Buffer{}
	cmd.Stdout = &buffer
	cmd.Stderr = &buffer
	err = cmd.Run()
	if err != nil {
		return buffer.String(), err
	}

	return buffer.String(), nil
}
開發者ID:rudle,項目名稱:p2,代碼行數:30,代碼來源:hoist_launchable.go

示例2: SetLogBridgeExec

func (pod *Pod) SetLogBridgeExec(logExec []string) {
	p2ExecArgs := p2exec.P2ExecArgs{
		Command: logExec,
		User:    "nobody",
		EnvDirs: []string{pod.EnvDir()},
	}

	pod.LogExec = append([]string{pod.P2Exec}, p2ExecArgs.CommandLine()...)
}
開發者ID:petertseng,項目名稱:p2,代碼行數:9,代碼來源:pod.go

示例3: FinishExecForLaunchable

func (pod *Pod) FinishExecForLaunchable(launchable launch.Launchable) runit.Exec {
	p2ExecArgs := p2exec.P2ExecArgs{
		Command: pod.FinishExec,
		User:    "nobody",
		EnvDirs: []string{pod.EnvDir(), launchable.EnvDir()},
	}

	return append([]string{pod.P2Exec}, p2ExecArgs.CommandLine()...)
}
開發者ID:drcapulet,項目名稱:p2,代碼行數:9,代碼來源:pod.go

示例4: FinishExecForExecutable

func (pod *Pod) FinishExecForExecutable(launchable launch.Launchable, executable launch.Executable) runit.Exec {
	p2ExecArgs := p2exec.P2ExecArgs{
		Command:  pod.FinishExec,
		User:     "nobody",
		EnvDirs:  []string{pod.EnvDir(), launchable.EnvDir()},
		ExtraEnv: map[string]string{launch.EntryPointEnvVar: executable.ServiceName},
	}

	return append([]string{pod.P2Exec}, p2ExecArgs.CommandLine()...)
}
開發者ID:petertseng,項目名稱:p2,代碼行數:10,代碼來源:pod.go

示例5: Executables

func (hl *Launchable) Executables(
	serviceBuilder *runit.ServiceBuilder,
) ([]launch.Executable, error) {
	if !hl.Installed() {
		return []launch.Executable{}, util.Errorf("%s is not installed", hl.Id)
	}

	binLaunchPath := filepath.Join(hl.InstallDir(), "bin", "launch")

	binLaunchInfo, err := os.Stat(binLaunchPath)
	if os.IsNotExist(err) {
		return []launch.Executable{}, nil
	} else if err != nil {
		return nil, util.Errorf("%s", err)
	}

	// we support bin/launch being a file, or a directory, so we check here.
	services := []os.FileInfo{binLaunchInfo}
	serviceDir := filepath.Dir(binLaunchPath)
	if binLaunchInfo.IsDir() {
		serviceDir = binLaunchPath
		services, err = ioutil.ReadDir(binLaunchPath)
		if err != nil {
			return nil, err
		}
	}

	var executables []launch.Executable
	for _, service := range services {
		serviceName := fmt.Sprintf("%s__%s", hl.Id, service.Name())
		p2ExecArgs := p2exec.P2ExecArgs{
			Command:          []string{filepath.Join(serviceDir, service.Name())},
			User:             hl.RunAs,
			EnvDir:           hl.PodEnvDir,
			NoLimits:         hl.ExecNoLimit,
			CgroupConfigName: hl.CgroupConfigName,
			CgroupName:       hl.Id,
		}
		execCmd := append([]string{hl.P2Exec}, p2ExecArgs.CommandLine()...)

		executables = append(executables, launch.Executable{
			Service: runit.Service{
				Path: filepath.Join(serviceBuilder.RunitRoot, serviceName),
				Name: serviceName,
			},
			Exec: execCmd,
		})
	}
	return executables, nil
}
開發者ID:tomzhang,項目名稱:p2,代碼行數:50,代碼來源:hoist_launchable.go

示例6: Executables

func (hl *Launchable) Executables(
	serviceBuilder *runit.ServiceBuilder,
) ([]launch.Executable, error) {
	if !hl.Installed() {
		return []launch.Executable{}, util.Errorf("%s is not installed", hl.ServiceId)
	}

	// Maps service name to a launch.Executable to guarantee that no two services can share
	// a name.
	executableMap := make(map[string]launch.Executable)

	for _, relativeEntryPoint := range hl.EntryPoints {
		absEntryPointPath := filepath.Join(hl.InstallDir(), relativeEntryPoint)

		entryPointInfo, err := os.Stat(absEntryPointPath)
		if os.IsNotExist(err) {
			return []launch.Executable{}, nil
		} else if err != nil {
			return nil, util.Errorf("%s", err)
		}

		// an entry point can be a file or a directory. If it's a file, simply
		// add it to our services map. Otherwise, add each file under it.
		var serviceDir string
		var services []os.FileInfo
		if entryPointInfo.IsDir() {
			serviceDir = absEntryPointPath
			services, err = ioutil.ReadDir(absEntryPointPath)
			if err != nil {
				return nil, err
			}
		} else {
			serviceDir = filepath.Dir(absEntryPointPath)
			services = append(services, entryPointInfo)
		}

		for _, service := range services {
			serviceName := fmt.Sprintf("%s__%s", hl.ServiceId, service.Name())

			// Make sure we don't have two services with the same name
			// (which is possible because) multiple entry points may be
			// specified

			if _, ok := executableMap[serviceName]; ok {
				return nil, util.Errorf("Multiple services found with name %s", serviceName)
			}

			p2ExecArgs := p2exec.P2ExecArgs{
				Command:          []string{filepath.Join(serviceDir, service.Name())},
				User:             hl.RunAs,
				EnvDirs:          []string{hl.PodEnvDir, hl.EnvDir()},
				NoLimits:         hl.ExecNoLimit,
				CgroupConfigName: hl.CgroupConfigName,
				CgroupName:       hl.CgroupName,
			}
			execCmd := append([]string{hl.P2Exec}, p2ExecArgs.CommandLine()...)

			executableMap[serviceName] = launch.Executable{
				Service: runit.Service{
					Path: filepath.Join(serviceBuilder.RunitRoot, serviceName),
					Name: serviceName,
				},
				LogAgent: runit.Service{
					Path: filepath.Join(serviceBuilder.RunitRoot, serviceName, "log"),
					Name: serviceName + " logAgent",
				},
				Exec: execCmd,
			}
		}
	}

	var executables []launch.Executable
	for _, executable := range executableMap {
		executables = append(executables, executable)
	}

	return executables, nil
}
開發者ID:rudle,項目名稱:p2,代碼行數:78,代碼來源:hoist_launchable.go


注:本文中的github.com/square/p2/pkg/p2exec.P2ExecArgs類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。