Ejemplo n.º 1
0
        public void CopyFromVM(string remoteFilePathGlob, string localFilePath, bool recursive, bool force)
        {
            CheckProfileCanResolveSlave();

            Log(string.Format("Copying from remote path '{0}' to local path '{1}'{2}{3}.", localFilePath, remoteFilePathGlob,
                              recursive ? " recursively" : "",
                              force ? " force overwrite" : ""));

            var client = GetSlaveClient();

            EnumerateRequest enumerateRequest = new EnumerateRequest()
            {
                PathGlob  = remoteFilePathGlob,
                Recursive = recursive
            };
            EnumerateResponse enumerateResponse = client.Enumerate(enumerateRequest);

            if (enumerateResponse.Items.Count == 0 && !FileUtil.HasWildcard(remoteFilePathGlob))
            {
                throw new OperationFailedException()
                      {
                          Why = string.Format("Remote file{0} not found '{1}'.", recursive ? " or directory" : "", remoteFilePathGlob)
                      }
            }
            ;

            foreach (EnumerateItem item in enumerateResponse.Items)
            {
                string path = Path.Combine(localFilePath, item.RelativePath);

                if (item.Kind == EnumerateItemKind.DIRECTORY)
                {
                    if (!Directory.Exists(path))
                    {
                        Log(string.Format("Creating directory '{0}'.", item.RelativePath));
                        Directory.CreateDirectory(path);
                    }
                }
                else
                {
                    Log(string.Format("Copying '{0}'.", item.RelativePath));

                    ReadFileRequest request = new ReadFileRequest()
                    {
                        Path = item.FullPath
                    };
                    ReadFileResponse response = client.ReadFile(request);
                    if (!force && File.Exists(path))
                    {
                        throw new OperationFailedException()
                              {
                                  Why = string.Format("Local file already exists '{0}'.", path)
                              }
                    }
                    ;
                    File.WriteAllBytes(path, response.Contents);
                }
            }
        }
Ejemplo n.º 2
0
        public override EnumerateResponse Enumerate(EnumerateRequest request)
        {
            log.InfoFormat("Enumerate:\n  Path: {0}\n  Recursive: {1}", request.PathGlob, request.Recursive);

            EnumerateResponse response = new EnumerateResponse();

            response.Items = new List <EnumerateItem>();

            FileUtil.TraverseFiles(request.PathGlob, request.Recursive,
                                   (file, relativePath) => response.Items.Add(new EnumerateItem()
            {
                Kind         = EnumerateItemKind.FILE,
                RelativePath = relativePath,
                FullPath     = file.FullName
            }),
                                   (directory, relativePath) => response.Items.Add(new EnumerateItem()
            {
                Kind         = EnumerateItemKind.DIRECTORY,
                RelativePath = relativePath,
                FullPath     = directory.FullName
            }));

            return(response);
        }
Ejemplo n.º 3
0
 public abstract EnumerateResponse Enumerate(EnumerateRequest request);
Ejemplo n.º 4
0
        public override EnumerateResponse Enumerate(EnumerateRequest request)
        {
            log.InfoFormat("Enumerate:\n  Path: {0}\n  Recursive: {1}", request.PathGlob, request.Recursive);

            EnumerateResponse response = new EnumerateResponse();
            response.Items = new List<EnumerateItem>();

            FileUtil.TraverseFiles(request.PathGlob, request.Recursive,
                (file, relativePath) => response.Items.Add(new EnumerateItem()
                {
                    Kind = EnumerateItemKind.FILE,
                    RelativePath = relativePath,
                    FullPath = file.FullName
                }),
                (directory, relativePath) => response.Items.Add(new EnumerateItem()
                {
                    Kind = EnumerateItemKind.DIRECTORY,
                    RelativePath = relativePath,
                    FullPath = directory.FullName
                }));

            return response;
        }
Ejemplo n.º 5
0
        public void CopyFromVM(string remoteFilePathGlob, string localFilePath, bool recursive, bool force)
        {
            CheckProfileCanResolveSlave();

            Log(string.Format("Copying from remote path '{0}' to local path '{1}'{2}{3}.", localFilePath, remoteFilePathGlob,
                recursive ? " recursively" : "",
                force ? " force overwrite" : ""));

            var client = GetSlaveClient();

            EnumerateRequest enumerateRequest = new EnumerateRequest()
            {
                PathGlob = remoteFilePathGlob,
                Recursive = recursive
            };
            EnumerateResponse enumerateResponse = client.Enumerate(enumerateRequest);

            if (enumerateResponse.Items.Count == 0 && !FileUtil.HasWildcard(remoteFilePathGlob))
                throw new OperationFailedException() {
                    Why = string.Format("Remote file{0} not found '{1}'.", recursive ? " or directory" : "", remoteFilePathGlob)
                };

            foreach (EnumerateItem item in enumerateResponse.Items)
            {
                string path = Path.Combine(localFilePath, item.RelativePath);

                if (item.Kind == EnumerateItemKind.DIRECTORY)
                {
                    if (!Directory.Exists(path))
                    {
                        Log(string.Format("Creating directory '{0}'.", item.RelativePath));
                        Directory.CreateDirectory(path);
                    }
                }
                else
                {
                    Log(string.Format("Copying '{0}'.", item.RelativePath));

                    ReadFileRequest request = new ReadFileRequest() { Path = item.FullPath };
                    ReadFileResponse response = client.ReadFile(request);
                    if (! force && File.Exists(path))
                        throw new OperationFailedException() {
                            Why = string.Format("Local file already exists '{0}'.", path) };
                    File.WriteAllBytes(path, response.Contents);
                }
            }
        }
Ejemplo n.º 6
0
 public EnumerateResponse Enumerate(EnumerateRequest request)
 {
     return(_service.Enumerate(request));
 }
Ejemplo n.º 7
0
 public EnumerateResponse Enumerate(EnumerateRequest request)
 {
     return _service.Enumerate(request);
 }
Ejemplo n.º 8
0
 public abstract EnumerateResponse Enumerate(EnumerateRequest request);
Ejemplo n.º 9
0
 EnumerateResponse IWSEnumerationContract.Enumerate(EnumerateRequest request)
 {
     return(_enumerationServer.Enumerate(request));
 }