本文整理汇总了Golang中github.com/juju/utils/symlink.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: UntarFiles
// UntarFiles will extract the contents of tarFile using
// outputFolder as root
func UntarFiles(tarFile io.Reader, outputFolder string) error {
tr := tar.NewReader(tarFile)
for {
hdr, err := tr.Next()
if err == io.EOF {
// end of tar archive
return nil
}
if err != nil {
return fmt.Errorf("failed while reading tar header: %v", err)
}
fullPath := filepath.Join(outputFolder, hdr.Name)
switch hdr.Typeflag {
case tar.TypeDir:
if err = os.MkdirAll(fullPath, os.FileMode(hdr.Mode)); err != nil {
return fmt.Errorf("cannot extract directory %q: %v", fullPath, err)
}
case tar.TypeSymlink:
if err = symlink.New(hdr.Linkname, fullPath); err != nil {
return fmt.Errorf("cannot extract symlink %q to %q: %v", hdr.Linkname, fullPath, err)
}
continue
case tar.TypeReg, tar.TypeRegA:
if err = createAndFill(fullPath, hdr.Mode, tr); err != nil {
return fmt.Errorf("cannot extract file %q: %v", fullPath, err)
}
}
}
return nil
}
开发者ID:kat-co,项目名称:utils,代码行数:32,代码来源:tar.go
示例2: SetUpTest
func (s *prereqsSuite) SetUpTest(c *gc.C) {
s.BaseSuite.SetUpTest(c)
s.tmpdir = c.MkDir()
s.testMongodPath = filepath.Join(s.tmpdir, "mongod")
s.PatchEnvironment("PATH", s.tmpdir)
s.PatchValue(&mongo.JujuMongodPath, "/somewhere/that/wont/exist")
os.Setenv("JUJUTEST_LSB_RELEASE_ID", "Ubuntu")
err := ioutil.WriteFile(filepath.Join(s.tmpdir, "lsb_release"), []byte(lsbrelease), 0777)
c.Assert(err, jc.ErrorIsNil)
// symlink $temp/dpkg-query to /bin/true, to
// simulate package installation query responses.
pm, err := testing.GetPackageManager()
c.Assert(err, jc.ErrorIsNil)
err = symlink.New("/bin/true", filepath.Join(s.tmpdir, pm.PackageQuery))
c.Assert(err, jc.ErrorIsNil)
s.PatchValue(&isPackageInstalled, func(pack string) bool {
pacman, err := manager.NewPackageManager(series.HostSeries())
c.Assert(err, jc.ErrorIsNil)
return pacman.IsInstalled(pack)
})
}
开发者ID:imoapps,项目名称:juju,代码行数:26,代码来源:prereqs_test.go
示例3: TestReplace
func (*SymlinkSuite) TestReplace(c *gc.C) {
target, err := symlink.GetLongPathAsString(c.MkDir())
c.Assert(err, gc.IsNil)
target_second, err := symlink.GetLongPathAsString(c.MkDir())
c.Assert(err, gc.IsNil)
link := filepath.Join(target, "link")
_, err = os.Stat(target)
c.Assert(err, gc.IsNil)
_, err = os.Stat(target_second)
c.Assert(err, gc.IsNil)
err = symlink.New(target, link)
c.Assert(err, gc.IsNil)
link_target, err := symlink.Read(link)
c.Assert(err, gc.IsNil)
c.Assert(link_target, gc.Equals, filepath.FromSlash(target))
err = symlink.Replace(link, target_second)
c.Assert(err, gc.IsNil)
link_target, err = symlink.Read(link)
c.Assert(err, gc.IsNil)
c.Assert(link_target, gc.Equals, filepath.FromSlash(target_second))
}
开发者ID:kat-co,项目名称:utils,代码行数:26,代码来源:symlink_test.go
示例4: TestMachineAgentSymlinkJujuRunExists
func (s *MachineSuite) TestMachineAgentSymlinkJujuRunExists(c *gc.C) {
if runtime.GOOS == "windows" {
// Cannot make symlink to nonexistent file on windows or
// create a file point a symlink to it then remove it
c.Skip("Cannot test this on windows")
}
stm, _, _ := s.primeAgent(c, state.JobManageModel)
a := s.newAgent(c, stm)
defer a.Stop()
// Pre-create the symlinks, but pointing to the incorrect location.
links := []string{jujuRun, jujuDumpLogs}
a.rootDir = c.MkDir()
for _, link := range links {
fullLink := utils.EnsureBaseDir(a.rootDir, link)
c.Assert(os.MkdirAll(filepath.Dir(fullLink), os.FileMode(0755)), jc.ErrorIsNil)
c.Assert(symlink.New("/nowhere/special", fullLink), jc.ErrorIsNil, gc.Commentf(link))
}
// Start the agent and wait for it be running.
_, done := s.waitForOpenState(c, a)
// juju-run symlink should have been recreated.
for _, link := range links {
fullLink := utils.EnsureBaseDir(a.rootDir, link)
linkTarget, err := symlink.Read(fullLink)
c.Assert(err, jc.ErrorIsNil)
c.Assert(linkTarget, gc.Not(gc.Equals), "/nowhere/special", gc.Commentf(link))
}
s.waitStopped(c, state.JobManageModel, a, done)
}
开发者ID:bac,项目名称:juju,代码行数:33,代码来源:machine_test.go
示例5: SetUpTest
func (s *ToolsSuite) SetUpTest(c *gc.C) {
s.dataDir = c.MkDir()
s.toolsDir = tools.SharedToolsDir(s.dataDir, version.Current)
err := os.MkdirAll(s.toolsDir, 0755)
c.Assert(err, gc.IsNil)
err = symlink.New(s.toolsDir, tools.ToolsDir(s.dataDir, "unit-u-123"))
c.Assert(err, gc.IsNil)
}
开发者ID:jiasir,项目名称:juju,代码行数:8,代码来源:tools_test.go
示例6: createJujuRun
func (a *MachineAgent) createJujuRun(dataDir string) error {
// TODO do not remove the symlink if it already points
// to the right place.
if err := os.Remove(jujuRun); err != nil && !os.IsNotExist(err) {
return err
}
jujud := filepath.Join(dataDir, "tools", a.Tag().String(), jujunames.Jujud)
return symlink.New(jujud, jujuRun)
}
开发者ID:zhouqt,项目名称:juju,代码行数:9,代码来源:machine.go
示例7: TestJujuLocalPrereq
func (s *prereqsSuite) TestJujuLocalPrereq(c *gc.C) {
err := os.Remove(filepath.Join(s.tmpdir, "dpkg-query"))
c.Assert(err, gc.IsNil)
err = symlink.New("/bin/false", filepath.Join(s.tmpdir, "dpkg-query"))
c.Assert(err, gc.IsNil)
err = VerifyPrerequisites(instance.LXC)
c.Assert(err, gc.ErrorMatches, "(.|\n)*juju-local must be installed to enable the local provider(.|\n)*")
c.Assert(err, gc.ErrorMatches, "(.|\n)*apt-get install juju-local(.|\n)*")
}
开发者ID:jiasir,项目名称:juju,代码行数:10,代码来源:prereqs_test.go
示例8: SetUpTest
func (s *ToolsSuite) SetUpTest(c *gc.C) {
s.dataDir = c.MkDir()
s.toolsDir = tools.SharedToolsDir(s.dataDir, version.Binary{
Number: version.Current,
Arch: arch.HostArch(),
Series: series.HostSeries(),
})
err := os.MkdirAll(s.toolsDir, 0755)
c.Assert(err, jc.ErrorIsNil)
err = symlink.New(s.toolsDir, tools.ToolsDir(s.dataDir, "unit-u-123"))
c.Assert(err, jc.ErrorIsNil)
}
开发者ID:imoapps,项目名称:juju,代码行数:12,代码来源:tools_test.go
示例9: TestJujuLocalPrereq
func (s *prereqsSuite) TestJujuLocalPrereq(c *gc.C) {
pm, err := testing.GetPackageManager()
c.Assert(err, jc.ErrorIsNil)
err = os.Remove(filepath.Join(s.tmpdir, pm.PackageQuery))
c.Assert(err, jc.ErrorIsNil)
err = symlink.New("/bin/false", filepath.Join(s.tmpdir, pm.PackageQuery))
c.Assert(err, jc.ErrorIsNil)
err = VerifyPrerequisites(instance.LXC)
c.Assert(err, gc.ErrorMatches, "(.|\n)*juju-local must be installed to enable the local provider(.|\n)*")
c.Assert(err, gc.ErrorMatches, "(.|\n)*apt-get install juju-local(.|\n)*")
}
开发者ID:imoapps,项目名称:juju,代码行数:14,代码来源:prereqs_test.go
示例10: TestMachineAgentSymlinkJujuRunExists
func (s *MachineSuite) TestMachineAgentSymlinkJujuRunExists(c *gc.C) {
err := symlink.New("/nowhere/special", jujuRun)
c.Assert(err, gc.IsNil)
_, err = os.Stat(jujuRun)
c.Assert(err, jc.Satisfies, os.IsNotExist)
s.assertJobWithAPI(c, state.JobManageEnviron, func(conf agent.Config, st *api.State) {
// juju-run should have been recreated
_, err := os.Stat(jujuRun)
c.Assert(err, gc.IsNil)
link, err := symlink.Read(jujuRun)
c.Assert(err, gc.IsNil)
c.Assert(link, gc.Not(gc.Equals), "/nowhere/special")
})
}
开发者ID:klyachin,项目名称:juju,代码行数:14,代码来源:machine_test.go
示例11: TestCreateSymLink
func (*SymlinkSuite) TestCreateSymLink(c *gc.C) {
target, err := symlink.GetLongPathAsString(c.MkDir())
c.Assert(err, gc.IsNil)
link := filepath.Join(target, "link")
_, err = os.Stat(target)
c.Assert(err, gc.IsNil)
err = symlink.New(target, link)
c.Assert(err, gc.IsNil)
link, err = symlink.Read(link)
c.Assert(err, gc.IsNil)
c.Assert(link, gc.Equals, filepath.FromSlash(target))
}
开发者ID:juju,项目名称:utils,代码行数:16,代码来源:symlink_windows_test.go
示例12: SetUpTest
func (s *BaseRepoSuite) SetUpTest(c *gc.C) {
// Set up a local repository.
s.RepoPath = os.Getenv("JUJU_REPOSITORY")
repoPath := c.MkDir()
os.Setenv("JUJU_REPOSITORY", repoPath)
s.SeriesPath = filepath.Join(repoPath, config.LatestLtsSeries())
c.Assert(os.Mkdir(s.SeriesPath, 0777), jc.ErrorIsNil)
// Create a symlink "quantal" -> "precise", because most charms
// and machines are written with hard-coded "quantal" series,
// hence they interact badly with a local repository that assumes
// only "precise" charms are available.
err := symlink.New(s.SeriesPath, filepath.Join(repoPath, "quantal"))
c.Assert(err, jc.ErrorIsNil)
s.BundlesPath = filepath.Join(repoPath, "bundle")
c.Assert(os.Mkdir(s.BundlesPath, 0777), jc.ErrorIsNil)
}
开发者ID:pmatulis,项目名称:juju,代码行数:16,代码来源:repo.go
示例13: TestIsSymlinkFolder
func (*SymlinkSuite) TestIsSymlinkFolder(c *gc.C) {
target, err := symlink.GetLongPathAsString(c.MkDir())
c.Assert(err, gc.IsNil)
link := filepath.Join(target, "link")
_, err = os.Stat(target)
c.Assert(err, gc.IsNil)
err = symlink.New(target, link)
c.Assert(err, gc.IsNil)
isSymlink, err := symlink.IsSymlink(link)
c.Assert(err, gc.IsNil)
c.Assert(isSymlink, jc.IsTrue)
}
开发者ID:kat-co,项目名称:utils,代码行数:16,代码来源:symlink_test.go
示例14: TestUpgrade
func (s *GitDeployerSuite) TestUpgrade(c *gc.C) {
// Install.
info1 := s.bundles.AddCustomBundle(c, corecharm.MustParseURL("cs:s/c-1"), func(path string) {
err := ioutil.WriteFile(filepath.Join(path, "some-file"), []byte("hello"), 0644)
c.Assert(err, jc.ErrorIsNil)
err = symlink.New("./some-file", filepath.Join(path, "a-symlink"))
c.Assert(err, jc.ErrorIsNil)
})
err := s.deployer.Stage(info1, nil)
c.Assert(err, jc.ErrorIsNil)
err = s.deployer.Deploy()
c.Assert(err, jc.ErrorIsNil)
// Upgrade.
info2 := s.bundles.AddCustomBundle(c, corecharm.MustParseURL("cs:s/c-2"), func(path string) {
err := ioutil.WriteFile(filepath.Join(path, "some-file"), []byte("goodbye"), 0644)
c.Assert(err, jc.ErrorIsNil)
err = ioutil.WriteFile(filepath.Join(path, "a-symlink"), []byte("not any more!"), 0644)
c.Assert(err, jc.ErrorIsNil)
})
err = s.deployer.Stage(info2, nil)
c.Assert(err, jc.ErrorIsNil)
checkCleanup(c, s.deployer)
err = s.deployer.Deploy()
c.Assert(err, jc.ErrorIsNil)
checkCleanup(c, s.deployer)
// Check content.
data, err := ioutil.ReadFile(filepath.Join(s.targetPath, "some-file"))
c.Assert(err, jc.ErrorIsNil)
c.Assert(string(data), gc.Equals, "goodbye")
data, err = ioutil.ReadFile(filepath.Join(s.targetPath, "a-symlink"))
c.Assert(err, jc.ErrorIsNil)
c.Assert(string(data), gc.Equals, "not any more!")
target := charm.NewGitDir(s.targetPath)
url, err := target.ReadCharmURL()
c.Assert(err, jc.ErrorIsNil)
c.Assert(url, gc.DeepEquals, corecharm.MustParseURL("cs:s/c-2"))
lines, err := target.Log()
c.Assert(err, jc.ErrorIsNil)
c.Assert(lines, gc.HasLen, 5)
c.Assert(lines[0], gc.Matches, `[0-9a-f]{7} Upgraded charm to "cs:s/c-2".`)
}
开发者ID:Pankov404,项目名称:juju,代码行数:44,代码来源:git_deployer_test.go
示例15: SetUpTest
func (s *prereqsSuite) SetUpTest(c *gc.C) {
s.BaseSuite.SetUpTest(c)
s.tmpdir = c.MkDir()
s.testMongodPath = filepath.Join(s.tmpdir, "mongod")
s.PatchEnvironment("PATH", s.tmpdir)
s.PatchValue(&mongo.JujuMongodPath, "/somewhere/that/wont/exist")
os.Setenv("JUJUTEST_LSB_RELEASE_ID", "Ubuntu")
err := ioutil.WriteFile(filepath.Join(s.tmpdir, "lsb_release"), []byte(lsbrelease), 0777)
c.Assert(err, gc.IsNil)
// symlink $temp/dpkg-query to /bin/true, to
// simulate package installation query responses.
err = symlink.New("/bin/true", filepath.Join(s.tmpdir, "dpkg-query"))
c.Assert(err, gc.IsNil)
s.PatchValue(&isPackageInstalled, apt.IsPackageInstalled)
}
开发者ID:jiasir,项目名称:juju,代码行数:19,代码来源:prereqs_test.go
示例16: autostartContainer
func autostartContainer(name string) error {
// Now symlink the config file into the restart directory, if it exists.
// This is for backwards compatiblity. From Trusty onwards, the auto start
// option should be set in the LXC config file, this is done in the networkConfigTemplate
// function below.
if useRestartDir() {
if err := symlink.New(
containerConfigFilename(name),
restartSymlink(name),
); err != nil {
return err
}
logger.Tracef("auto-restart link created")
} else {
logger.Tracef("Setting auto start to true in lxc config.")
return appendToContainerConfig(name, "lxc.start.auto = 1\n")
}
return nil
}
开发者ID:claudiu-coblis,项目名称:juju,代码行数:19,代码来源:lxc.go
示例17: TestIsSymlinkFile
func (*SymlinkSuite) TestIsSymlinkFile(c *gc.C) {
dir, err := symlink.GetLongPathAsString(c.MkDir())
c.Assert(err, gc.IsNil)
target := filepath.Join(dir, "file")
err = ioutil.WriteFile(target, []byte("TOP SECRET"), 0644)
c.Assert(err, gc.IsNil)
link := filepath.Join(dir, "link")
_, err = os.Stat(target)
c.Assert(err, gc.IsNil)
err = symlink.New(target, link)
c.Assert(err, gc.IsNil)
isSymlink, err := symlink.IsSymlink(link)
c.Assert(err, gc.IsNil)
c.Assert(isSymlink, jc.IsTrue)
}
开发者ID:kat-co,项目名称:utils,代码行数:20,代码来源:symlink_test.go
示例18: SetUpTest
func (s *RepoSuite) SetUpTest(c *gc.C) {
s.JujuConnSuite.SetUpTest(c)
// Change the environ's config to ensure we're using the one in state,
// not the one in the local environments.yaml
updateAttrs := map[string]interface{}{"default-series": config.LatestLtsSeries()}
err := s.State.UpdateEnvironConfig(updateAttrs, nil, nil)
c.Assert(err, jc.ErrorIsNil)
s.RepoPath = os.Getenv("JUJU_REPOSITORY")
repoPath := c.MkDir()
os.Setenv("JUJU_REPOSITORY", repoPath)
s.SeriesPath = filepath.Join(repoPath, config.LatestLtsSeries())
err = os.Mkdir(s.SeriesPath, 0777)
c.Assert(err, jc.ErrorIsNil)
// Create a symlink "quantal" -> "precise", because most charms
// and machines are written with hard-coded "quantal" series,
// hence they interact badly with a local repository that assumes
// only "precise" charms are available.
err = symlink.New(s.SeriesPath, filepath.Join(repoPath, "quantal"))
c.Assert(err, jc.ErrorIsNil)
}
开发者ID:Pankov404,项目名称:juju,代码行数:20,代码来源:repo.go
示例19: TestReadData
func (*SymlinkSuite) TestReadData(c *gc.C) {
dir := c.MkDir()
sub := filepath.Join(dir, "sub")
err := os.Mkdir(sub, 0700)
c.Assert(err, gc.IsNil)
oldname := filepath.Join(sub, "foo")
data := []byte("data")
err = ioutil.WriteFile(oldname, data, 0644)
c.Assert(err, gc.IsNil)
newname := filepath.Join(dir, "bar")
err = symlink.New(oldname, newname)
c.Assert(err, gc.IsNil)
b, err := ioutil.ReadFile(newname)
c.Assert(err, gc.IsNil)
c.Assert(string(b), gc.Equals, string(data))
}
开发者ID:juju,项目名称:utils,代码行数:22,代码来源:symlink_windows_test.go
示例20: EnsureSymlinks
// EnsureSymlinks creates a symbolic link to jujuc within dir for each
// hook command. If the commands already exist, this operation does nothing.
// If dir is a symbolic link, it will be dereferenced first.
func EnsureSymlinks(dir string) (err error) {
logger.Infof("ensure jujuc symlinks in %s", dir)
defer func() {
if err != nil {
err = errors.Annotatef(err, "cannot initialize hook commands in %q", dir)
}
}()
isSymlink, err := symlink.IsSymlink(dir)
if err != nil {
return err
}
if isSymlink {
link, err := symlink.Read(dir)
if err != nil {
return err
}
if !filepath.IsAbs(link) {
logger.Infof("%s is relative", link)
link = filepath.Join(filepath.Dir(dir), link)
}
dir = link
logger.Infof("was a symlink, now looking at %s", dir)
}
jujudPath := filepath.Join(dir, names.Jujud)
logger.Debugf("jujud path %s", jujudPath)
for _, name := range CommandNames() {
// The link operation fails when the target already exists,
// so this is a no-op when the command names already
// exist.
err := symlink.New(jujudPath, filepath.Join(dir, name))
if err != nil && !os.IsExist(err) {
return err
}
}
return nil
}
开发者ID:howbazaar,项目名称:juju,代码行数:40,代码来源:tools.go
注:本文中的github.com/juju/utils/symlink.New函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论