Merge "Folder Not Found with Git Downloadable File"

This commit is contained in:
Jenkins 2015-04-22 08:51:26 +00:00 committed by Gerrit Code Review
commit ce1b97382b
2 changed files with 23 additions and 9 deletions

View File

@ -18,13 +18,13 @@ import git
import os
import requests
import shutil
import subprocess
import urlparse
from muranoagent.common import config
from muranoagent.openstack.common import log as logging
CONF = config.CONF
LOG = logging.getLogger(__name__)
class FilesManager(object):
@ -104,11 +104,23 @@ class FilesManager(object):
folder = self._get_file_folder(url_file, file_def['Name'])
if self._is_git_repository(url_file):
if not os.path.isdir(folder):
if not os.path.isdir(folder):
os.makedirs(folder)
try:
if self._is_git_repository(url_file):
git.Git().clone(url_file, folder)
else:
self._download_file(url_file, folder)
else:
self._download_file(url_file, folder)
except Exception as e:
if self._is_git_repository(url_file):
mns = ("Error to clone the git repository {0}: {1}".
format(url_file, e.message))
else:
mns = ("Error to download the file {0}: {1}".
format(url_file, e.message))
LOG.warn(mns)
raise ValueError(mns)
def clear(self):
shutil.rmtree(self._cache_folder, ignore_errors=True)

View File

@ -13,8 +13,8 @@
# under the License.
import bunch
import git
import mock
import os.path
from muranoagent.common import config as cfg
from muranoagent import files_manager
@ -41,7 +41,8 @@ class TestFileManager(base.MuranoAgentTestCase):
mock_path.return_value = None
files = files_manager.FilesManager(self.get_template_downloable())
folder = files._get_file_folder("http://tomcat.git", "tomcat")
self.assertEqual(folder, "cache/files/ID/files/tomcat")
self.assertEqual(folder,
os.path.normpath("cache/files/ID/files/tomcat"))
@mock.patch('os.makedirs')
def test_get_folder_not_git(self, mock_path):
@ -49,7 +50,8 @@ class TestFileManager(base.MuranoAgentTestCase):
mock_path.return_value = None
files = files_manager.FilesManager(self.get_template_downloable())
folder = files._get_file_folder("http://tomcat", "tomcat")
self.assertEqual(folder, "cache/files/ID/files/tomcat")
self.assertEqual(folder,
os.path.normpath("cache/files/ID/files/tomcat"))
@mock.patch("git.Git")
@mock.patch('os.path.isdir')