Aravinda VK has uploaded a new change for review.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
gluster: VDSM Gluster verb to set swift configuration
VDSM Gluster verb for UFO(Unified File Object) configuration manage.(setting the swift configuration)
glusterSwiftConfigSet: Set the config items from swift proxy/account/object/container server
Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Signed-off-by: Aravinda VK avishwan@redhat.com --- M vdsm/gluster/api.py M vdsm/gluster/exception.py M vdsm/gluster/swift.py M vdsm_cli/vdsClientGluster.py 4 files changed, 95 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/83/13383/1
diff --git a/vdsm/gluster/api.py b/vdsm/gluster/api.py index bb0666f..e6ea775 100644 --- a/vdsm/gluster/api.py +++ b/vdsm/gluster/api.py @@ -225,6 +225,11 @@ configOption) return {"config": configValues}
+ @exportAsVerb + def swiftConfigSet(self, serverType, configDict, options=None): + self.svdsmProxy.glusterSwiftConfigSet(serverType, + configDict) +
def getGlusterMethods(gluster): l = [] diff --git a/vdsm/gluster/exception.py b/vdsm/gluster/exception.py index 89421d4..c66e4b2 100644 --- a/vdsm/gluster/exception.py +++ b/vdsm/gluster/exception.py @@ -419,3 +419,8 @@
def __init__(self, opt=""): self.err = ["Invalid Swift Config option: %s" % opt] + + +class GlusterSwiftConfigWriteFailedException(GlusterGeneralException): + code = 4412 + message = "Swift Config file write failed" diff --git a/vdsm/gluster/swift.py b/vdsm/gluster/swift.py index 4442dd5..6dc6f5d 100644 --- a/vdsm/gluster/swift.py +++ b/vdsm/gluster/swift.py @@ -19,6 +19,8 @@ #
from ConfigParser import DEFAULTSECT, ConfigParser +import tempfile +import shutil
from . import exportToSuperVdsm import exception as ge @@ -104,3 +106,60 @@ @exportToSuperVdsm def swiftConfigGet(serverType, section=None, configOption=None): return _configGet(serverType, section, configOption) + + +def _writeSwiftConfigFile(serverType, config): + config_file = SWIFT_CONFIG_FILES[serverType] + try: + # Write to a temp file + tempConfigFile = tempfile.NamedTemporaryFile(mode="wb", delete=False) + with open(tempConfigFile.name, 'wb') as configFile: + config.write(configFile) + + # If src and dst are two different file system, then os.rename + # fails, In this case if temp file created in /tmp and if /tmp is + # seperate fs then os.rename gives following error, so use shutil + # OSError: [Errno 18] Invalid cross-device link + # mail.python.org/pipermail/python-list/2005-February/342893.html + shutil.move(tempConfigFile.name, config_file) + except IOError as e: + errMsg = "[Errno %s] %s: '%s'" % (e.errno, e.strerror, e.filename) + raise ge.GlusterSwiftConfigWriteFailedException(err=[errMsg]) + + +def _configSet(serverType, configDict): + """ + Set config values in swift config files + :param serverType Type of swift server(gluster-swift-proxy, + gluster-swift-account, gluster-swift-object, gluster-swift-container) + :param configDict Dict of items to update with section name as key + Ex: {"section1": {"configOpt1": "value1", "configOpt2": "value2"},..} + """ + config = _openSwiftConfigFile(serverType) + + # Every section query automatically includes DEFAULTS options, + # to avoid this remove default options and reconstruct at the end + defaultValues = dict(config.defaults()) + config._defaults = {} + + for section in configDict: + if not config.has_section(section) and section.upper() != DEFAULTSECT: + config.add_section(section) + + for configOption in configDict[section]: + value = configDict[section][configOption] + # Since default values seperated from main config object + # update defaultValues dict instead of config object + if section == DEFAULTSECT: + defaultValues[configOption] = value + else: + config.set(section, configOption, value) + + # Restore defaults + config._defaults = defaultValues + _writeSwiftConfigFile(serverType, config) + + +@exportToSuperVdsm +def swiftConfigSet(serverType, configDict): + _configSet(serverType, configDict) diff --git a/vdsm_cli/vdsClientGluster.py b/vdsm_cli/vdsClientGluster.py index ba1af88..6f80eb0 100644 --- a/vdsm_cli/vdsClientGluster.py +++ b/vdsm_cli/vdsClientGluster.py @@ -18,6 +18,7 @@ #
import pprint as pp +import ast
from vdsClient import service
@@ -325,6 +326,22 @@ pp.pprint(status) return status['status']['code'], status['status']['message']
+ def do_glusterSwiftConfigSet(self, args): + params = self._eqSplit(args) + serverType = params.get('serverType', '') + if serverType == "": + raise ValueError + configDictStr = params.get('configDict', '{}') + + try: + configDict = ast.literal_eval(configDictStr) + except: + raise ValueError + + status = self.s.glusterSwiftConfigSet(serverType, configDict) + pp.pprint(status) + return status['status']['code'], status['status']['message'] +
def getGlusterCmdDict(serv): return \ @@ -546,4 +563,13 @@ 'configOption is the config item in respective config file', 'returns the Swift config values' )), + 'glusterSwiftConfigSet': ( + serv.do_glusterSwiftConfigSet, + ('serverType=<serverType> configDict=<configDict>\n\t', + 'serverType is the type of swift service(proxy-server, ' + 'object-server, account-server, container-server)', + 'configDict dict of config items which needs update' + '{"section1": {"key1": "value1", "key2": "value2"}..}', + 'Updates the Swift configuration file' + )), }
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com
oVirt Jenkins CI Server has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1:
Build Started http://jenkins.ovirt.org/job/vdsm_unit_tests_gerrit/1788/ (1/2)
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
oVirt Jenkins CI Server has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1:
Build Started http://jenkins.ovirt.org/job/vdsm_pep8_gerrit/1737/ (2/2)
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
oVirt Jenkins CI Server has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1:
Build Successful
http://jenkins.ovirt.org/job/vdsm_pep8_gerrit/1737/ : SUCCESS
http://jenkins.ovirt.org/job/vdsm_unit_tests_gerrit/1788/ : SUCCESS
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
Aravinda VK has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1: Verified
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
Timothy Asir has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1: Looks good to me, but someone else must approve
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Bala.FA barumuga@redhat.com Gerrit-Reviewer: Dan Kenigsberg danken@redhat.com Gerrit-Reviewer: Timothy Asir tjeyasin@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
Dan Kenigsberg has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1: I would prefer that you didn't submit this
I did not pierced through the commit message - I do not understand how this patch is different from the previous one. They seem related to a bigger feature, which I'd be happy to see linked here.
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Bala.FA barumuga@redhat.com Gerrit-Reviewer: Dan Kenigsberg danken@redhat.com Gerrit-Reviewer: Timothy Asir tjeyasin@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
Ayal Baron has posted comments on this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Patch Set 1: I would prefer that you didn't submit this
Here too, nothing in the logic should really be swift related. The same code could be applied to any config file (e.g. vdsm.conf)
-- To view, visit http://gerrit.ovirt.org/13383 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment Gerrit-Change-Id: Ibba9c30d1ad4926c88e58cb4bc9a858b8a07f77b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Aravinda VK avishwan@redhat.com Gerrit-Reviewer: Ayal Baron abaron@redhat.com Gerrit-Reviewer: Bala.FA barumuga@redhat.com Gerrit-Reviewer: Dan Kenigsberg danken@redhat.com Gerrit-Reviewer: Timothy Asir tjeyasin@redhat.com Gerrit-Reviewer: oVirt Jenkins CI Server
Aravinda VK has abandoned this change.
Change subject: gluster: VDSM Gluster verb to set swift configuration ......................................................................
Abandoned
Current requirement is changed, and swift configuration is not used. So abandoning the patch.
vdsm-patches@lists.fedorahosted.org