Dan Kenigsberg has posted comments on this change. Change subject: gluster: verbs for managing services ......................................................................
Patch Set 23: I would prefer that you didn't submit this (10 inline comments) I am sorry that it took me so much time to review this patch, but I do not think that I'm happy with the proposed API. .................................................... File vdsm/gluster/Makefile.am Line 27: cli.py \ Line 28: exception.py \ Line 29: hooks.py \ Line 30: hostname.py \ Line 31: services.py next time, please add the $(NULL) trick. Line 32: Line 33: dist_vdsmgluster_DATA = \ Line 34: vdsmapi-gluster-schema.json \ .................................................... File vdsm/gluster/services.py Line 22: from vdsm.tool import service Line 23: from . import makePublic Line 24: Line 25: Line 26: ALLOWED_SERVICES = ["glusterd", This should better be an immutable tuple. Actually, a frozenset() is even better, if the order does not matter. Line 27: "memcached", Line 28: "gluster-swift-proxy", Line 29: "gluster-swift-container", Line 30: "gluster-swift-object", Line 56: def _formatStatus(serviceName, status, message=''): Line 57: return {'name': serviceName, 'status': status, 'message': message} Line 58: Line 59: Line 60: def _serviceStatus(serviceName, failOnError=False): arg failOnError unused - better drop it. Line 61: rc = service.service_status(serviceName) Line 62: Line 63: if rc == 0: Line 64: return _formatStatus(serviceName, StatusTypes.RUNNING) Line 69: rc1 = service.service_is_managed(serviceName) Line 70: if rc1 == 0: Line 71: return _formatStatus(serviceName, StatusTypes.STOPPED) Line 72: else: Line 73: return _formatStatus(serviceName, StatusTypes.NOT_AVAILABLE) Are "not managed" and "not available" the same thing? If so, use one term. Line 74: Line 75: Line 76: def _serviceAction(serviceName, action, failOnError=False): Line 77: if action == ServiceActions.STATUS: Line 109: else: Line 110: if not failOnError: Line 111: resp = _formatStatus(serviceName, StatusTypes.NOT_SUPPORTED) Line 112: else: Line 113: raise ge.GlusterServiceNotSupportedException(sName=serviceName) Is there a difference between "allowed" and "supported"? If not, please use one term (I prefer "supported") both in the exception name and the variable ALLOWED_SERVICES. Line 114: Line 115: statusOutput.append(resp) Line 116: Line 117: return statusOutput Line 117: return statusOutput Line 118: Line 119: Line 120: @makePublic Line 121: def servicesManage(serviceNames, action, failOnError=False): "manage" is a very vague term. I believe that "Act" would be clearer (but I am not sure). Line 122: """ Line 123: {'services': [ Line 124: {'name': SERVICE_NAME, 'status': STATUS, 'message': MESSAGE},..]} Line 125: """ Line 119: Line 120: @makePublic Line 121: def servicesManage(serviceNames, action, failOnError=False): Line 122: """ Line 123: {'services': [ please add the word "Return" before the example dict. Line 124: {'name': SERVICE_NAME, 'status': STATUS, 'message': MESSAGE},..]} Line 125: """ Line 126: action = action.lower() Line 127: return _action(serviceNames, action, failOnError) Line 122: """ Line 123: {'services': [ Line 124: {'name': SERVICE_NAME, 'status': STATUS, 'message': MESSAGE},..]} Line 125: """ Line 126: action = action.lower() why would we want to be case-insensitive? It's not a human interface (and human interfaces too are better when they are case-sensitive). Line 127: return _action(serviceNames, action, failOnError) Line 128: Line 129: Line 130: @makePublic Line 127: return _action(serviceNames, action, failOnError) Line 128: Line 129: Line 130: @makePublic Line 131: def servicesGet(serviceNames, failOnError=False): Could you explain (in the commit message, maybe) why do we want failOnError as a tunable? It confuses the semantics of the verb. failOnError=True means "If one service action fails but other succeed, return an error code with no explanation on which service action failed". This I do not see why this is useful. Line 132: """ Line 133: {'services': [ Line 134: {'name': SERVICE_NAME, 'status': STATUS, 'message': MESSAGE},..]} Line 135: """ .................................................... File vdsm/gluster/vdsmapi-gluster-schema.json Line 260: # @RUNNING: Service is Running Line 261: # Line 262: # @STOPPED: Service is Stopped Line 263: # Line 264: # @NOT_AVAILABLE: Service is not managed/available does this mean that the relevant service is not installed on host? Line 265: # Line 266: # @NOT_SUPPORTED: Service is not allowed to manage Line 267: # Line 268: # @ERROR: Service action failed -- To view, visit http://gerrit.ovirt.org/11094 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I8a16bf566d17e186a66503391dfd04b2f2bb4bb4 Gerrit-PatchSet: 23 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Aravinda VK <avish...@redhat.com> Gerrit-Reviewer: Adam Litke <a...@us.ibm.com> Gerrit-Reviewer: Aravinda VK <avish...@redhat.com> Gerrit-Reviewer: Bala.FA <barum...@redhat.com> Gerrit-Reviewer: Dan Kenigsberg <dan...@redhat.com> Gerrit-Reviewer: Federico Simoncelli <fsimo...@redhat.com> Gerrit-Reviewer: Saggi Mizrahi <smizr...@redhat.com> Gerrit-Reviewer: Timothy Asir <tjeya...@redhat.com> Gerrit-Reviewer: Zhou Zheng Sheng <zhshz...@linux.vnet.ibm.com> Gerrit-Reviewer: oVirt Jenkins CI Server _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches