本文整理汇总了Golang中github.com/docker/machine/libmachine/mcnutils.CopyFile函数的典型用法代码示例。如果您正苦于以下问题:Golang CopyFile函数的具体用法?Golang CopyFile怎么用?Golang CopyFile使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CopyFile函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: extractKernelImages
func (d *Driver) extractKernelImages() error {
log.Debugf("Mounting %s", isoFilename)
err := hdiutil("attach", d.ResolveStorePath(isoFilename), "-mountpoint", d.ResolveStorePath("b2d-image"))
if err != nil {
return err
}
volumeRootDir := d.ResolveStorePath(isoMountPath)
vmlinuz64 := volumeRootDir + "/boot/vmlinuz64"
initrd := volumeRootDir + "/boot/initrd.img"
log.Debugf("Extracting vmlinuz64 into %s", d.ResolveStorePath("."))
if err := mcnutils.CopyFile(vmlinuz64, d.ResolveStorePath("vmlinuz64")); err != nil {
return err
}
log.Debugf("Extracting initrd.img into %s", d.ResolveStorePath("."))
if err := mcnutils.CopyFile(initrd, d.ResolveStorePath("initrd.img")); err != nil {
return err
}
log.Debugf("Unmounting %s", isoFilename)
if err := hdiutil("detach", volumeRootDir); err != nil {
return err
}
return nil
}
示例2: extractKernelImages
func (d *Driver) extractKernelImages() error {
log.Debugf("Mounting %s", isoFilename)
volumeRootDir := d.ResolveStorePath(isoMountPath)
err := hdiutil("attach", d.ResolveStorePath(isoFilename), "-mountpoint", volumeRootDir)
if err != nil {
return err
}
log.Debugf("Extracting Kernel Options...")
if err := d.extractKernelOptions(); err != nil {
return err
}
defer func() error {
log.Debugf("Unmounting %s", isoFilename)
return hdiutil("detach", volumeRootDir)
}()
if d.BootKernel == "" && d.BootInitrd == "" {
err = filepath.Walk(volumeRootDir, func(path string, f os.FileInfo, err error) error {
if kernelRegexp.MatchString(path) {
d.BootKernel = path
_, d.Vmlinuz = filepath.Split(path)
}
if strings.Contains(path, "initrd") {
d.BootInitrd = path
_, d.Initrd = filepath.Split(path)
}
return nil
})
}
if err != nil {
if err != nil || d.BootKernel == "" || d.BootInitrd == "" {
err = fmt.Errorf("==== Can't extract Kernel and Ramdisk file ====")
return err
}
}
dest := d.ResolveStorePath(d.Vmlinuz)
log.Debugf("Extracting %s into %s", d.BootKernel, dest)
if err := mcnutils.CopyFile(d.BootKernel, dest); err != nil {
return err
}
dest = d.ResolveStorePath(d.Initrd)
log.Debugf("Extracting %s into %s", d.BootInitrd, dest)
if err := mcnutils.CopyFile(d.BootInitrd, dest); err != nil {
return err
}
return nil
}
示例3: NewDockerMachine
func NewDockerMachine(config DockerMachineConfig) (DockerMachineAPI, error) {
storePath := config.StorePath
temp := false
if storePath == "" {
tempPath, err := ioutil.TempDir("", "")
if err != nil {
return nil, errors.Wrap(err, "failed to create temp dir")
}
storePath = tempPath
temp = true
}
certsPath := filepath.Join(storePath, "certs")
if _, err := os.Stat(certsPath); os.IsNotExist(err) {
err := os.MkdirAll(certsPath, 0700)
if err != nil {
return nil, errors.WithMessage(err, "failed to create certs dir")
}
}
if config.CaPath != "" {
err := mcnutils.CopyFile(filepath.Join(config.CaPath, "ca.pem"), filepath.Join(certsPath, "ca.pem"))
if err != nil {
return nil, errors.Wrap(err, "failed to copy ca file")
}
err = mcnutils.CopyFile(filepath.Join(config.CaPath, "ca-key.pem"), filepath.Join(certsPath, "ca-key.pem"))
if err != nil {
return nil, errors.Wrap(err, "failed to copy ca key file")
}
}
if config.OutWriter != nil {
log.SetOutWriter(config.OutWriter)
} else {
log.SetOutWriter(ioutil.Discard)
}
if config.ErrWriter != nil {
log.SetOutWriter(config.ErrWriter)
} else {
log.SetOutWriter(ioutil.Discard)
}
log.SetDebug(config.IsDebug)
client := libmachine.NewClient(storePath, certsPath)
client.IsDebug = config.IsDebug
if _, err := os.Stat(client.GetMachinesDir()); os.IsNotExist(err) {
err := os.MkdirAll(client.GetMachinesDir(), 0700)
if err != nil {
return nil, errors.WithMessage(err, "failed to create machines dir")
}
}
return &DockerMachine{
StorePath: storePath,
CertsPath: certsPath,
client: client,
temp: temp,
}, nil
}
示例4: extractKernelImages
func (d *Driver) extractKernelImages() error {
log.Debugf("Mounting %s", isoFilename)
if err := hdiutil("attach", d.ResolveStorePath(isoFilename)); err != nil {
return err
}
log.Debugf("Getting Boot2docker version ...")
iso, err := os.Open("/Volumes")
if err != nil {
return err
}
defer iso.Close()
// TODO: More faster parse
l, _ := ioutil.ReadDir(iso.Name())
s := make([]string, 0, 100)
for _, f := range l {
re := regexp.MustCompile(`(.*)-(.*)`)
re2 := regexp.MustCompile(`(^v.*)`)
s = re.FindStringSubmatch(f.Name())
for _, v := range s {
if re2.MatchString(v) {
d.Boot2DockerIsoVersion = v
break
}
}
}
log.Debugf("Boot2docker version: %s", d.Boot2DockerIsoVersion)
volumeRootDir := "/Volumes/Boot2Docker-" + d.Boot2DockerIsoVersion
vmlinuz64 := volumeRootDir + "/boot/vmlinuz64"
initrd := volumeRootDir + "/boot/initrd.img"
log.Debugf("Extracting vmlinuz64 into %s", d.ResolveStorePath("."))
if err := mcnutils.CopyFile(vmlinuz64, d.ResolveStorePath("vmlinuz64")); err != nil {
return err
}
log.Debugf("Extracting initrd.img into %s", d.ResolveStorePath("."))
if err := mcnutils.CopyFile(initrd, d.ResolveStorePath("initrd.img")); err != nil {
return err
}
log.Debugf("Unmounting %s", isoFilename)
if err := hdiutil("detach", volumeRootDir); err != nil {
return err
}
return nil
}
示例5: extractKernelImages
func (d *Driver) extractKernelImages() error {
var vmlinuz64 = "/Volumes/Boot2Docker-v1.8/boot/vmlinuz64"
var initrd = "/Volumes/Boot2Docker-v1.8/boot/initrd.img"
hdiutil("attach", d.ISO)
log.Debugf("Mounting %s", isoFilename)
log.Debugf("Extract vmlinuz64")
if err := mcnutils.CopyFile(vmlinuz64, filepath.Join(d.LocalArtifactPath("."), "vmlinuz64")); err != nil {
return err
}
log.Debugf("Extract initrd.img")
if err := mcnutils.CopyFile(initrd, filepath.Join(d.LocalArtifactPath("."), "initrd.img")); err != nil {
return err
}
return nil
}
示例6: Create
// Create a host using the driver's config
func (d *Driver) Create() error {
log.Infof("Importing SSH key...")
if err := mcnutils.CopyFile(d.SSHKey, d.GetSSHKeyPath()); err != nil {
return fmt.Errorf("unable to copy public ssh key: %s", err)
}
if err := os.Chmod(d.GetSSHKeyPath(), 0600); err != nil {
return err
}
if err := mcnutils.CopyFile(fmt.Sprintf("%s.pub", d.SSHKey), d.publicSSHKeyPath()); err != nil {
return fmt.Errorf("unable to copy public ssh key: %s", err)
}
log.Debugf("IP: %s", d.IPAddress)
return nil
}
示例7: createKeyPair
func (d *Driver) createKeyPair() error {
keyPath := ""
if d.SSHPrivateKeyPath == "" {
log.Debugf("Creating New SSH Key")
if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil {
return err
}
keyPath = d.GetSSHKeyPath()
} else {
log.Debugf("Using SSHPrivateKeyPath: %s", d.SSHPrivateKeyPath)
if err := mcnutils.CopyFile(d.SSHPrivateKeyPath, d.GetSSHKeyPath()); err != nil {
return err
}
if err := mcnutils.CopyFile(d.SSHPrivateKeyPath+".pub", d.GetSSHKeyPath()+".pub"); err != nil {
return err
}
if d.KeyName != "" {
log.Debugf("Using existing EC2 key pair: %s", d.KeyName)
return nil
}
keyPath = d.SSHPrivateKeyPath
}
publicKey, err := ioutil.ReadFile(keyPath + ".pub")
if err != nil {
return err
}
keyName := d.MachineName
log.Debugf("creating key pair: %s", keyName)
_, err = d.getClient().ImportKeyPair(&ec2.ImportKeyPairInput{
KeyName: &keyName,
PublicKeyMaterial: publicKey,
})
if err != nil {
return err
}
d.KeyName = keyName
return nil
}
示例8: copySSHKey
func copySSHKey(src, dst string) error {
if err := mcnutils.CopyFile(src, dst); err != nil {
return fmt.Errorf("unable to copy ssh key: %s", err)
}
if err := os.Chmod(dst, 0600); err != nil {
return fmt.Errorf("unable to set permissions on the ssh key: %s", err)
}
return nil
}
示例9: extractKernelImages
func (d *Driver) extractKernelImages() error {
var vmlinuz64 = "/Volumes/Boot2Docker-v1.8/boot/vmlinuz64" // TODO Do not hardcode boot2docker version
var initrd = "/Volumes/Boot2Docker-v1.8/boot/initrd.img" // TODO Do not hardcode boot2docker version
log.Debugf("Mounting %s", isoFilename)
hdiutil("attach", d.ResolveStorePath(isoFilename)) // TODO need parse attached disk identifier.
log.Debugf("Extract vmlinuz64")
if err := mcnutils.CopyFile(vmlinuz64, d.ResolveStorePath("vmlinuz64")); err != nil {
return err
}
log.Debugf("Extract initrd.img")
if err := mcnutils.CopyFile(initrd, d.ResolveStorePath("initrd.img")); err != nil {
return err
}
log.Debugf("Unmounting %s", isoFilename)
if err := hdiutil("detach", "/Volumes/Boot2Docker-v1.8/"); err != nil { // TODO Do not hardcode boot2docker version
return err
}
return nil
}
示例10: Create
func (d *Driver) Create() error {
log.Info("Importing SSH key...")
// TODO: validate the key is a valid key
if err := mcnutils.CopyFile(d.SSHKey, d.GetSSHKeyPath()); err != nil {
return fmt.Errorf("unable to copy ssh key: %s", err)
}
if err := os.Chmod(d.GetSSHKeyPath(), 0600); err != nil {
return fmt.Errorf("unable to set permissions on the ssh key: %s", err)
}
log.Debugf("IP: %s", d.IPAddress)
return nil
}
示例11: Create
func (d *Driver) Create() error {
log.Debugf("Creating a new Instance for Stack: %s", d.MachineName)
if d.SSHKeyPath != "" {
log.Debugf("Copying Key to Machine Directory: %s", d.GetSSHKeyPath)
if err := mcnutils.CopyFile(d.SSHPrivateKeyPath, d.GetSSHKeyPath()); err != nil {
return err
}
}
svc := cloudformation.New(session.New())
params := &cloudformation.CreateStackInput{
StackName: aws.String(d.MachineName),
TemplateURL: aws.String(d.CloudFormationURL),
Parameters: d.createParams(),
Tags: d.createTags(),
}
_, err := svc.CreateStack(params)
if err != nil {
return err
}
if err := mcnutils.WaitForSpecificOrError(d.stackAvailable, 120, 3*time.Second); err != nil {
return err
}
if err := d.getInstanceInfo(); err != nil {
return err
}
if err := waitFor(sshAvailableFunc(d)); err != nil {
return fmt.Errorf("Too many retries waiting for SSH to be available. Last error: %s", err)
}
log.Debugf("created instance ID %s, IP address %s, Private IP address %s",
d.InstanceId,
d.IPAddress,
d.PrivateIPAddress,
)
return nil
}
示例12: Create
func (d *Driver) Create() error {
if d.SSHKey == "" {
log.Info("No SSH key specified. Assuming an existing key at the default location.")
} else {
log.Info("Importing SSH key...")
// TODO: validate the key is a valid key
if err := mcnutils.CopyFile(d.SSHKey, d.GetSSHKeyPath()); err != nil {
return fmt.Errorf("unable to copy ssh key: %s", err)
}
if err := os.Chmod(d.GetSSHKeyPath(), 0600); err != nil {
return fmt.Errorf("unable to set permissions on the ssh key: %s", err)
}
}
log.Debugf("IP: %s", d.IPAddress)
return nil
}
示例13: Create
func (d *Driver) Create() error {
if d.SSHKey == "" {
log.Info("No SSH key specified. Connecting to this machine now and in the" +
" future will require the ssh agent to contain the appropriate key.")
} else {
log.Info("Importing SSH key...")
// TODO: validate the key is a valid key
if err := mcnutils.CopyFile(d.SSHKey, d.GetSSHKeyPath()); err != nil {
return fmt.Errorf("unable to copy ssh key: %s", err)
}
if err := os.Chmod(d.GetSSHKeyPath(), 0600); err != nil {
return fmt.Errorf("unable to set permissions on the ssh key: %s", err)
}
}
log.Debugf("IP: %s", d.IPAddress)
return nil
}
示例14: Create
func (d *Driver) Create() error {
b2dutils := mcnutils.NewB2dUtils(d.StorePath)
if err := b2dutils.CopyIsoToMachineDir(d.Boot2DockerURL, d.MachineName); err != nil {
return err
}
if d.IsVTXDisabled() {
// Let's log a warning to warn the user. When the vm is started, logs
// will be checked for an error anyway.
// We could fail right here but the method to check didn't prove being
// bulletproof.
log.Warn("This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory.")
}
log.Infof("Creating VirtualBox VM...")
// import b2d VM if requested
if d.Boot2DockerImportVM != "" {
name := d.Boot2DockerImportVM
// make sure vm is stopped
_ = d.vbm("controlvm", name, "poweroff")
diskInfo, err := d.getVMDiskInfo(name)
if err != nil {
return err
}
if _, err := os.Stat(diskInfo.Path); err != nil {
return err
}
if err := d.vbm("clonehd", diskInfo.Path, d.diskPath()); err != nil {
return err
}
log.Debugf("Importing VM settings...")
vmInfo, err := d.getVMInfo(name)
if err != nil {
return err
}
d.CPU = vmInfo.CPUs
d.Memory = vmInfo.Memory
log.Debugf("Importing SSH key...")
keyPath := filepath.Join(mcnutils.GetHomeDir(), ".ssh", "id_boot2docker")
if err := mcnutils.CopyFile(keyPath, d.GetSSHKeyPath()); err != nil {
return err
}
} else {
log.Infof("Creating SSH key...")
if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil {
return err
}
log.Debugf("Creating disk image...")
if err := d.generateDiskImage(d.DiskSize); err != nil {
return err
}
}
if err := d.vbm("createvm",
"--basefolder", d.ResolveStorePath("."),
"--name", d.MachineName,
"--register"); err != nil {
return err
}
log.Debugf("VM CPUS: %d", d.CPU)
log.Debugf("VM Memory: %d", d.Memory)
cpus := d.CPU
if cpus < 1 {
cpus = int(runtime.NumCPU())
}
if cpus > 32 {
cpus = 32
}
if err := d.vbm("modifyvm", d.MachineName,
"--firmware", "bios",
"--bioslogofadein", "off",
"--bioslogofadeout", "off",
"--bioslogodisplaytime", "0",
"--biosbootmenu", "disabled",
"--ostype", "Linux26_64",
"--cpus", fmt.Sprintf("%d", cpus),
"--memory", fmt.Sprintf("%d", d.Memory),
"--acpi", "on",
"--ioapic", "on",
"--rtcuseutc", "on",
"--natdnshostresolver1", "off",
"--natdnsproxy1", "off",
"--cpuhotplug", "off",
"--pae", "on",
"--hpet", "on",
"--hwvirtex", "on",
"--nestedpaging", "on",
"--largepages", "on",
//.........这里部分代码省略.........
示例15: Create
// Create create server on sakuracloud
func (d *Driver) Create() error {
spec := d.buildSakuraServerSpec()
var publicKey = ""
if d.SSHKey == "" {
log.Infof("Creating SSH public key...")
pKey, err := d.createSSHKey()
if err != nil {
return err
}
publicKey = pKey
} else {
log.Info("Importing SSH key...")
if err := mcnutils.CopyFile(d.SSHKey, d.GetSSHKeyPath()); err != nil {
return fmt.Errorf("unable to copy ssh key: %s", err)
}
if err := os.Chmod(d.GetSSHKeyPath(), 0600); err != nil {
return fmt.Errorf("unable to set permissions on the ssh key: %s", err)
}
if err := mcnutils.CopyFile(d.SSHKey+".pub", d.GetSSHKeyPath()+".pub"); err != nil {
return fmt.Errorf("unable to copy ssh key: %s", err)
}
pKey, err := ioutil.ReadFile(d.publicSSHKeyPath())
if err != nil {
return err
}
publicKey = string(pKey)
}
if d.serverConfig.Password == "" {
d.serverConfig.Password = generateRandomPassword()
log.Infof("password is not set, generated password:%s", d.serverConfig.Password)
}
//create server
serverResponse, err := d.getClient().Create(spec, d.serverConfig.PrivateIP)
if err != nil {
return fmt.Errorf("Error creating host: %v", err)
}
id := serverResponse.ID
log.Infof("Created Server ID: %s", id)
d.ID = id
var noteIDs []string
noteID, err := d.getClient().GetAllowSudoNoteID(id)
if err != nil || noteID == "" {
return fmt.Errorf("Error creating custom note: %v", err)
}
noteIDs = append(noteIDs, noteID)
var addIPNoteID = ""
if d.serverConfig.PrivateIP != "" {
var err error
addIPNoteID, err = d.getClient().GetAddIPCustomizeNoteID(id, d.serverConfig.PrivateIP, d.serverConfig.PrivateIPSubnetMask)
if err != nil {
return fmt.Errorf("Error creating custom note: %v", err)
}
if addIPNoteID != "" {
noteIDs = append(noteIDs, addIPNoteID)
}
}
var changeGatewayNoteID = ""
if d.serverConfig.Gateway != "" {
var err error
changeGatewayNoteID, err = d.getClient().GetChangeGatewayCustomizeNoteID(id, d.serverConfig.Gateway)
if err != nil {
return fmt.Errorf("Error creating custom note: %v", err)
}
if changeGatewayNoteID != "" {
noteIDs = append(noteIDs, changeGatewayNoteID)
}
}
var disableEth0NoteID = ""
if d.serverConfig.PrivateIPOnly {
var err error
disableEth0NoteID, err = d.getClient().GetDisableEth0CustomizeNoteID(id)
if err != nil {
return fmt.Errorf("Error creating custom note: %v", err)
}
if disableEth0NoteID != "" {
noteIDs = append(noteIDs, disableEth0NoteID)
}
}
// create disk( from public archive 'Ubuntu')
diskSpec := d.buildSakuraDiskSpec()
diskID, err := d.getClient().CreateDisk(diskSpec)
if err != nil {
return fmt.Errorf("Error creating disk: %v", err)
//.........这里部分代码省略.........