Skip to content
Snippets Groups Projects
Commit 1eb392b2 authored by sveseli's avatar sveseli
Browse files

fixed parsing data directory

parent a2012052
No related branches found
No related tags found
No related merge requests found
__version__ = "1.1 (2017.03.01)"
__version__ = "1.1 (2017.03.03)"
#!/usr/bin/env python
import os
from dm.aps_bss.api.apsBssApi import ApsBssApi
from dm.ds_web_service.api.experimentDsApi import ExperimentDsApi
from dm.ds_web_service.api.userDsApi import UserDsApi
......@@ -114,19 +113,6 @@ class DaqCli(ApsBeamlineCli):
# Remove duplicates by converting into set
return list(set(users+beamlineManagers))
def getDataDirectory(self):
dataDirectory = self.options.dataDirectory
replacementMap = os.environ.get('DM_DATA_DIRECTORY_MAP', '')
(scheme, host, port, dirPath) = FtpUtility.parseUrl(dataDirectory)
if dirPath and replacementMap:
# Map entries are expected to be in the form
# <original>|<replacement>;<original>|<replacement>;...
for entry in replacementMap.split(';'):
original = entry.split('|')[0]
replacement = entry.split('|')[1]
dirPath = dataDirectory.replace(original,replacement)
return FtpUtility.assembleUrl(scheme, host, port, dirPath)
def addOrUpdateExperiment(self):
dsExperimentApi = ExperimentDsApi(self.loginUsername, self.loginPassword, self.dsServiceHost, self.dsServicePort, self.serviceProtocol)
dsUserApi = UserDsApi(self.loginUsername, self.loginPassword, self.dsServiceHost, self.dsServicePort, self.serviceProtocol)
......
#!/usr/bin/env python
import os
from dm.aps_bss.api.apsBssApi import ApsBssApi
from dm.ds_web_service.api.experimentDsApi import ExperimentDsApi
from dm.ds_web_service.api.userDsApi import UserDsApi
from dm.daq_web_service.api.experimentDaqApi import ExperimentDaqApi
from dm.common.constants import dmProcessingMode
from dm.common.utility.ftpUtility import FtpUtility
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.exceptions.objectNotFound import ObjectNotFound
from dm.common.utility.configurationManager import ConfigurationManager
......@@ -105,19 +103,6 @@ class UploadCli(ApsBeamlineCli):
# Remove duplicates by converting into set
return list(set(users+beamlineManagers))
def getDataDirectory(self):
dataDirectory = self.options.dataDirectory
replacementMap = os.environ.get('DM_DATA_DIRECTORY_MAP', '')
(scheme, host, port, dirPath) = FtpUtility.parseUrl(dataDirectory)
if dirPath and replacementMap:
# Map entries are expected to be in the form
# <original>|<replacement>;<original>|<replacement>;...
for entry in replacementMap.split(';'):
original = entry.split('|')[0]
replacement = entry.split('|')[1]
dirPath = dataDirectory.replace(original,replacement)
return FtpUtility.assembleUrl(scheme, host, port, dirPath)
def addOrUpdateExperiment(self):
dsExperimentApi = ExperimentDsApi(self.loginUsername, self.loginPassword, self.dsServiceHost, self.dsServicePort, self.serviceProtocol)
dsUserApi = UserDsApi(self.loginUsername, self.loginPassword, self.dsServiceHost, self.dsServicePort, self.serviceProtocol)
......
......@@ -4,6 +4,7 @@ import sys
import os
import os.path
import stat
import urlparse
from optparse import OptionGroup
import dm
......@@ -242,6 +243,51 @@ class DmCli(object):
else:
return '%s' % dmObject
def getDataDirectory(self):
dataDirectory = self.options.dataDirectory
replacementMap = os.environ.get('DM_DATA_DIRECTORY_MAP', '')
(scheme, host, port, dirPath) = self.parseUrl(dataDirectory)
if dirPath and replacementMap:
# Map entries are expected to be in the form
# <original>:<replacement> <original>:<replacement>;...
for entry in replacementMap.split(' '):
original = entry.split(':')[0]
replacement = entry.split(':')[1]
dirPath = dirPath.replace(original,replacement)
return self.assembleUrl(scheme, host, port, dirPath)
@classmethod
def parseUrl(cls, url, defaultHost=None, defaultPort=None):
host = defaultHost
port = defaultPort
parseResult = urlparse.urlparse(url)
scheme = parseResult.scheme
netlocTokens = parseResult.netloc
if netlocTokens:
netlocTokens = netlocTokens.split(':')
host = netlocTokens[0]
if len(netlocTokens) > 1:
port = int(netlocTokens[1])
dirPath = parseResult.path
dirPath = os.path.normpath(dirPath)
return (scheme, host, port, dirPath)
@classmethod
def assembleUrl(cls, scheme, host, port, dirPath):
url = ''
if scheme:
url += '%s://' % scheme
if host:
url += '%s' % (host)
if port:
url += ':%s' % (port)
if dirPath:
if len(url) and not dirPath.startswith('/'):
url += '/%s' % (os.path.normpath(dirPath))
else:
url += '%s' % (os.path.normpath(dirPath))
return url
#######################################################################
# Testing
......
......@@ -26,21 +26,4 @@ class DaqWebServiceSessionCli(DmRestSessionCli):
def getExperimentName(self):
return self.options.experimentName
def getDataDirectory(self):
dataDirectory = self.options.dataDirectory
if not dataDirectory:
return None
if dataDirectory.find('://') < 0:
fileServerUrl = os.environ.get('DM_FILE_SERVER_URL')
dataDirectory = '%s%s' % (fileServerUrl, dataDirectory)
replacementMap = os.environ.get('DM_DATA_DIRECTORY_MAP', '')
(scheme, host, port, dirPath) = FtpUtility.parseUrl(dataDirectory)
if dirPath and replacementMap:
# Map entries are expected to be in the form
# <original>|<replacement>;<original>|<replacement>;...
for entry in replacementMap.split(';'):
original = entry.split('|')[0]
replacement = entry.split('|')[1]
dirPath = dataDirectory.replace(original,replacement)
return FtpUtility.assembleUrl(scheme, host, port, dirPath)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment