本文整理汇总了Golang中github.com/juju/utils/os.HostOS函数的典型用法代码示例。如果您正苦于以下问题:Golang HostOS函数的具体用法?Golang HostOS怎么用?Golang HostOS使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了HostOS函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestPackage
func TestPackage(t *testing.T) {
// At this stage, Juju only supports running the apiservers and database
// on Ubuntu. If we end up officially supporting CentOS, then we should
// make sure we run the tests there.
if os.HostOS() != os.Ubuntu {
t.Skipf("skipping tests on %v", os.HostOS())
}
coretesting.MgoTestPackage(t)
}
开发者ID:bac,项目名称:juju,代码行数:9,代码来源:package_test.go
示例2: validateUploadAllowed
// validateUploadAllowed returns an error if an attempt to upload tools should
// not be allowed.
func validateUploadAllowed(env environs.Environ, toolsArch, toolsSeries *string, validator constraints.Validator) error {
// Now check that the architecture and series for which we are setting up an
// environment matches that from which we are bootstrapping.
hostArch := arch.HostArch()
// We can't build tools for a different architecture if one is specified.
if toolsArch != nil && *toolsArch != hostArch {
return fmt.Errorf("cannot use agent built for %q using a machine running on %q", *toolsArch, hostArch)
}
hostOS := jujuos.HostOS()
if toolsSeries != nil {
toolsSeriesOS, err := series.GetOSFromSeries(*toolsSeries)
if err != nil {
return errors.Trace(err)
}
if !toolsSeriesOS.EquivalentTo(hostOS) {
return errors.Errorf("cannot use agent built for %q using a machine running %q", *toolsSeries, hostOS)
}
}
// If no architecture is specified, ensure the target provider supports instances matching our architecture.
if _, err := validator.Validate(constraints.Value{Arch: &hostArch}); err != nil {
return errors.Errorf(
"model %q of type %s does not support instances running on %q",
env.Config().Name(), env.Config().Type(), hostArch,
)
}
return nil
}
开发者ID:bac,项目名称:juju,代码行数:29,代码来源:tools.go
示例3: NewPaths
// NewPaths returns the set of filesystem paths that the supplied unit should
// use, given the supplied root juju data directory path.
func NewPaths(dataDir string, unitTag names.UnitTag) Paths {
join := filepath.Join
baseDir := join(dataDir, "agents", unitTag.String())
stateDir := join(baseDir, "state")
socket := func(name string, abstract bool) string {
if os.HostOS() == os.Windows {
return fmt.Sprintf(`\\.\pipe\%s-%s`, unitTag, name)
}
path := join(baseDir, name+".socket")
if abstract {
path = "@" + path
}
return path
}
toolsDir := tools.ToolsDir(dataDir, unitTag.String())
return Paths{
ToolsDir: filepath.FromSlash(toolsDir),
Runtime: RuntimePaths{
JujuRunSocket: socket("run", false),
JujucServerSocket: socket("agent", true),
},
State: StatePaths{
CharmDir: join(baseDir, "charm"),
OperationsFile: join(stateDir, "uniter"),
RelationsDir: join(stateDir, "relations"),
BundlesDir: join(stateDir, "bundles"),
DeployerDir: join(stateDir, "deployer"),
StorageDir: join(stateDir, "storage"),
MetricsSpoolDir: join(stateDir, "spool", "metrics"),
},
}
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:37,代码来源:paths.go
示例4: NewWorker
// NewWorker returns a worker that keeps track of
// the machine's authorised ssh keys and ensures the
// ~/.ssh/authorized_keys file is up to date.
func NewWorker(st *keyupdater.State, agentConfig agent.Config) worker.Worker {
if os.HostOS() == os.Windows {
return worker.NewNoOpWorker()
}
kw := &keyupdaterWorker{st: st, tag: agentConfig.Tag().(names.MachineTag)}
return worker.NewNotifyWorker(kw)
}
开发者ID:imoapps,项目名称:juju,代码行数:10,代码来源:worker.go
示例5: runCharmHookWithLocation
func (runner *runner) runCharmHookWithLocation(hookName, charmLocation string) error {
srv, err := runner.startJujucServer()
if err != nil {
return err
}
defer srv.Close()
env, err := runner.context.HookVars(runner.paths)
if err != nil {
return errors.Trace(err)
}
if jujuos.HostOS() == jujuos.Windows {
// TODO(fwereade): somehow consolidate with utils/exec?
// We don't do this on the other code path, which uses exec.RunCommands,
// because that already has handling for windows environment requirements.
env = mergeWindowsEnvironment(env, os.Environ())
}
debugctx := debug.NewHooksContext(runner.context.UnitName())
if session, _ := debugctx.FindSession(); session != nil && session.MatchHook(hookName) {
logger.Infof("executing %s via debug-hooks", hookName)
err = session.RunHook(hookName, runner.paths.GetCharmDir(), env)
} else {
err = runner.runCharmHook(hookName, env, charmLocation)
}
return runner.context.Flush(hookName, err)
}
开发者ID:snailwalker,项目名称:juju,代码行数:27,代码来源:runner.go
示例6: syslogUserGroup
func syslogUserGroup() (string, string) {
switch os.HostOS() {
case os.CentOS:
return "root", "adm"
default:
return "syslog", "syslog"
}
}
开发者ID:howbazaar,项目名称:juju,代码行数:8,代码来源:conf.go
示例7: syslogUser
func syslogUser() string {
switch jujuos.HostOS() {
case jujuos.CentOS:
return "root"
default:
return "syslog"
}
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:8,代码来源:worker.go
示例8: appendProxyToCommands
// appendProxyToCommands activates proxy settings on platforms
// that support this feature via the command line. Currently this
// will work on most GNU/Linux systems, but has no use in Windows
// where the proxy settings are taken from the registry or from
// application specific settings (proxy settings in firefox ignore
// registry values on Windows).
func (c *RunCommand) appendProxyToCommands() string {
switch jujuos.HostOS() {
case jujuos.Ubuntu:
return `[ -f "/home/ubuntu/.juju-proxy" ] && . "/home/ubuntu/.juju-proxy"` + "\n" + c.commands
default:
return c.commands
}
}
开发者ID:imoapps,项目名称:juju,代码行数:14,代码来源:run.go
示例9: writeEnvironment
func (w *proxyWorker) writeEnvironment() error {
switch os.HostOS() {
case os.Windows:
return w.writeEnvironmentToRegistry()
default:
return w.writeEnvironmentFile()
}
}
开发者ID:bac,项目名称:juju,代码行数:8,代码来源:proxyupdater.go
示例10: OSDependentEnvVars
// OSDependentEnvVars returns the OS-dependent environment variables that
// should be set for a hook context.
func OSDependentEnvVars(paths Paths) []string {
switch jujuos.HostOS() {
case jujuos.Windows:
return windowsEnv(paths)
case jujuos.Ubuntu:
return ubuntuEnv(paths)
case jujuos.CentOS:
return centosEnv(paths)
}
return nil
}
开发者ID:howbazaar,项目名称:juju,代码行数:13,代码来源:env.go
示例11: removeJujudpass
// removeJujudpass removes a file that is no longer used on versions >1.25
// The Jujud.pass file was created during cloud init before
// so we know it's location for sure in case it exists
func removeJujudpass(context Context) error {
if os.HostOS() == os.Windows {
fileLocation := "C:\\Juju\\Jujud.pass"
if err := osRemove(fileLocation); err != nil {
// Don't fail the step if we can't get rid of the old files.
// We don't actually care if they still exist or not.
logger.Warningf("can't delete old password file %q: %s", fileLocation, err)
}
}
return nil
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:14,代码来源:steps125.go
示例12: newRsyslogConfigWorker
// newRsyslogConfigWorker returns a worker.Worker that uses
// WatchForRsyslogChanges and updates rsyslog configuration based
// on changes. The worker will remove the configuration file
// on teardown.
func newRsyslogConfigWorker(st *apirsyslog.State, mode RsyslogMode, tag names.Tag, namespace string, stateServerAddrs []string, jujuConfigDir string) (worker.Worker, error) {
if jujuos.HostOS() == jujuos.Windows && mode == RsyslogModeAccumulate {
return worker.NewNoOpWorker(), nil
}
handler, err := newRsyslogConfigHandler(st, mode, tag, namespace, stateServerAddrs, jujuConfigDir)
if err != nil {
return nil, err
}
logger.Debugf("starting rsyslog worker mode %v for %q %q", mode, tag, namespace)
return worker.NewNotifyWorker(handler), nil
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:15,代码来源:worker.go
示例13: TestSeriesVersion
func (s *supportedSeriesSuite) TestSeriesVersion(c *gc.C) {
// There is no distro-info on Windows or CentOS.
if os.HostOS() != os.Ubuntu {
c.Skip("This test is only relevant on Ubuntu.")
}
vers, err := series.SeriesVersion("precise")
if err != nil && err.Error() == `invalid series "precise"` {
c.Fatalf(`Unable to lookup series "precise", you may need to: apt-get install distro-info`)
}
c.Assert(err, jc.ErrorIsNil)
c.Assert(vers, gc.Equals, "12.04")
}
开发者ID:yxg,项目名称:utils,代码行数:12,代码来源:supportedseries_linux_test.go
示例14: addJujuRegKey
// addJujuRegKey tries to create the same key that is now created during cloudinit
// on machines having version 1.25 or up
// Since support for ACL's in golang is quite disastrous at the moment, and they're
// not especially easy to use, this is done using the exact same steps used in cloudinit
func addJujuRegKey(context Context) error {
if os.HostOS() == os.Windows {
cmds := cloudconfig.CreateJujuRegistryKeyCmds()
_, err := execRunCommands(exec.RunParams{
Commands: strings.Join(cmds, "\n"),
})
if err != nil {
return errors.Annotate(err, "could not create juju registry key")
}
logger.Infof("created juju registry key at %s", osenv.JujuRegistryKey)
return nil
}
return nil
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:18,代码来源:steps125.go
示例15: locallyBuildableTools
// locallyBuildableTools returns the list of tools that
// can be built locally, for series of the same OS.
func locallyBuildableTools() (buildable coretools.List) {
for _, ser := range series.SupportedSeries() {
if os, err := series.GetOSFromSeries(ser); err != nil || os != jujuos.HostOS() {
continue
}
binary := version.Binary{
Number: version.Current.Number,
Series: ser,
Arch: arch.HostArch(),
}
// Increment the build number so we know it's a development build.
binary.Build++
buildable = append(buildable, &coretools.Tools{Version: binary})
}
return buildable
}
开发者ID:kakamessi99,项目名称:juju,代码行数:18,代码来源:tools.go
示例16: GetPackageManager
func GetPackageManager() (s PackageManagerStruct, err error) {
switch jujuos.HostOS() {
case jujuos.CentOS:
s.PackageManager = "yum"
s.PackageQuery = "yum"
s.RepositoryManager = "yum-config-manager --add-repo"
case jujuos.Ubuntu:
s.PackageManager = "apt-get"
s.PackageQuery = "dpkg-query"
s.RepositoryManager = "add-apt-repository"
default:
s.PackageManager = "apt-get"
s.PackageQuery = "dpkg-query"
s.RepositoryManager = "add-apt-repository"
}
return s, nil
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:17,代码来源:base.go
示例17: hookCommand
// hookCommand constructs an appropriate command to be passed to
// exec.Command(). The exec package uses cmd.exe as default on windows.
// cmd.exe does not know how to execute ps1 files by default, and
// powershell needs a few flags to allow execution (-ExecutionPolicy)
// and propagate error levels (-File). .cmd and .bat files can be run
// directly.
func hookCommand(hook string) []string {
if jujuos.HostOS() != jujuos.Windows {
// we are not running on windows,
// just return the hook name
return []string{hook}
}
if strings.HasSuffix(hook, ".ps1") {
return []string{
"powershell.exe",
"-NonInteractive",
"-ExecutionPolicy",
"RemoteSigned",
"-File",
hook,
}
}
return []string{hook}
}
开发者ID:howbazaar,项目名称:juju,代码行数:24,代码来源:args.go
示例18: runListenerForAgent
func (s *RunTestSuite) runListenerForAgent(c *gc.C, agent string) {
agentDir := filepath.Join(cmdutil.DataDir, "agents", agent)
err := os.MkdirAll(agentDir, 0755)
c.Assert(err, jc.ErrorIsNil)
var socketPath string
switch jujuos.HostOS() {
case jujuos.Windows:
socketPath = fmt.Sprintf(`\\.\pipe\%s-run`, agent)
default:
socketPath = fmt.Sprintf("%s/run.socket", agentDir)
}
listener, err := uniter.NewRunListener(&mockRunner{c}, socketPath)
c.Assert(err, jc.ErrorIsNil)
c.Assert(listener, gc.NotNil)
s.AddCleanup(func(*gc.C) {
c.Assert(listener.Close(), jc.ErrorIsNil)
})
}
开发者ID:ktsakalozos,项目名称:juju,代码行数:18,代码来源:run_test.go
示例19: NewWorker
// NewWorker returns a worker that keeps track of
// the machine's authorised ssh keys and ensures the
// ~/.ssh/authorized_keys file is up to date.
func NewWorker(st *keyupdater.State, agentConfig agent.Config) (worker.Worker, error) {
machineTag, ok := agentConfig.Tag().(names.MachineTag)
if !ok {
return nil, errors.NotValidf("machine tag %v", agentConfig.Tag())
}
if os.HostOS() == os.Windows {
return worker.NewNoOpWorker(), nil
}
w, err := watcher.NewNotifyWorker(watcher.NotifyConfig{
Handler: &keyupdaterWorker{
st: st,
tag: machineTag,
},
})
if err != nil {
return nil, errors.Trace(err)
}
return w, nil
}
开发者ID:exekias,项目名称:juju,代码行数:22,代码来源:worker.go
示例20: locallyBuildableTools
// locallyBuildableTools returns the list of tools that
// can be built locally, for series of the same OS.
func locallyBuildableTools(toolsSeries *string) (buildable coretools.List, _ version.Number) {
buildNumber := jujuversion.Current
// Increment the build number so we know it's a custom build.
buildNumber.Build++
for _, ser := range series.SupportedSeries() {
if os, err := series.GetOSFromSeries(ser); err != nil || !os.EquivalentTo(jujuos.HostOS()) {
continue
}
if toolsSeries != nil && ser != *toolsSeries {
continue
}
binary := version.Binary{
Number: buildNumber,
Series: ser,
Arch: arch.HostArch(),
}
buildable = append(buildable, &coretools.Tools{Version: binary})
}
return buildable, buildNumber
}
开发者ID:bac,项目名称:juju,代码行数:22,代码来源:tools.go
注:本文中的github.com/juju/utils/os.HostOS函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论