本文整理汇总了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;未经允许,请勿转载。 |
请发表评论