diff --git a/main.py b/main.py index aebdd3a..2dfad83 100644 --- a/main.py +++ b/main.py @@ -11,19 +11,22 @@ import csi_pb2_grpc import subprocess -#csi_sock_full_path = "/Users/andre/Projects/opensource/gluster-dir-csi/csi.sock" -csi_sock_full_path = "/csi/csi.sock" -gluster_host = "10.0.114.218" -gluster_volume = "vol_main" + +gluster_host = os.environ["GLUSTER_HOST"] +gluster_volume = os.environ["GLUSTER_VOLUME"] + +csi_sock_full_path = os.environ.get("CSI_PATH", "/csi/csi.sock") def unmount(path): print("Unmounting", path) return subprocess.run(["umount", path]) + def mount(volume, path): print("Mounting", volume, "at", path) - p = subprocess.run(["mount","-t", "glusterfs", "%s:/%s/%s" % (gluster_host, gluster_volume, volume), path]) + p = subprocess.run(["mount", "-t", "glusterfs", "%s:/%s/%s" % + (gluster_host, gluster_volume, volume), path]) if p.returncode == 0: return True @@ -36,7 +39,7 @@ def mount(volume, path): class Identity(csi_pb2_grpc.Identity): def GetPluginInfo(self, request, context): - return csi_pb2.GetPluginInfoResponse(name='gluster-dir-csi',vendor_version="1") + return csi_pb2.GetPluginInfoResponse(name='gluster-dir-csi', vendor_version="1") def Probe(self, request, context): return csi_pb2.ProbeResponse() @@ -45,23 +48,27 @@ class Identity(csi_pb2_grpc.Identity): return csi_pb2.GetPluginCapabilitiesResponse( capabilities=[ csi_pb2.PluginCapability( - service=csi_pb2.PluginCapability.Service(type=csi_pb2.PluginCapability.Service.Type.CONTROLLER_SERVICE) + service=csi_pb2.PluginCapability.Service( + type=csi_pb2.PluginCapability.Service.Type.CONTROLLER_SERVICE) ) ]) + class Controller(csi_pb2_grpc.Controller): def ControllerGetCapabilities(self, request, context): - return csi_pb2.ControllerGetCapabilitiesResponse(capabilities=[ - csi_pb2.ControllerServiceCapability(rpc = csi_pb2.ControllerServiceCapability.RPC(type=csi_pb2.ControllerServiceCapability.RPC.Type.CREATE_DELETE_VOLUME)), - ]) + return csi_pb2.ControllerGetCapabilitiesResponse(capabilities=[ + csi_pb2.ControllerServiceCapability(rpc=csi_pb2.ControllerServiceCapability.RPC( + type=csi_pb2.ControllerServiceCapability.RPC.Type.CREATE_DELETE_VOLUME)), + ]) def CreateVolume(self, request, context): - name = request.name - print("CreateVolume", name) - p = subprocess.run(["mkdir", "-p", "/mnt/main/%s" % name]) - volume = csi_pb2.Volume(volume_id=name) - return csi_pb2.CreateVolumeResponse(volume=volume); + name = request.name + print("CreateVolume", name) + p = subprocess.run(["mkdir", "-p", "/mnt/main/%s" % name]) + volume = csi_pb2.Volume(volume_id=name) + return csi_pb2.CreateVolumeResponse(volume=volume) + class Node(csi_pb2_grpc.Node): @@ -70,25 +77,26 @@ class Node(csi_pb2_grpc.Node): return csi_pb2.NodeGetInfoResponse(node_id=node_id) def NodeGetCapabilities(self, request, context): - return csi_pb2.NodeGetCapabilitiesResponse(capabilities = [ - csi_pb2.NodeServiceCapability(rpc= csi_pb2.NodeServiceCapability.RPC(type = csi_pb2.NodeServiceCapability.RPC.Type.STAGE_UNSTAGE_VOLUME)) - ]); + return csi_pb2.NodeGetCapabilitiesResponse(capabilities=[ + csi_pb2.NodeServiceCapability(rpc=csi_pb2.NodeServiceCapability.RPC( + type=csi_pb2.NodeServiceCapability.RPC.Type.STAGE_UNSTAGE_VOLUME)) + ]) - def NodePublishVolume(self,request,context): + def NodePublishVolume(self, request, context): volume_id = request.volume_id path = request.target_path print("Node Publish Volume", path) p = subprocess.run(["mkdir", "-p", path], check=True) res = mount(volume_id, path) if res is True: - return csi_pb2.NodePublishVolumeResponse(); + return csi_pb2.NodePublishVolumeResponse() print(res) - def NodeUnpublishVolume(self,request,context): + def NodeUnpublishVolume(self, request, context): path = request.target_path print("NodeUnpublishVolume", path) p = subprocess.run(["umount", path]) - return csi_pb2.NodeUnpublishVolumeResponse(); + return csi_pb2.NodeUnpublishVolumeResponse() def NodeStageVolume(self, request, context): volume_id = request.volume_id @@ -113,14 +121,16 @@ def serve(): csi_pb2_grpc.add_NodeServicer_to_server(Node(), server) print("About to start listening on", csi_sock_full_path) - server.add_insecure_port(f'unix://%s' % csi_sock_full_path ) + server.add_insecure_port(f'unix://%s' % csi_sock_full_path) server.start() print("Waiting for termination") server.wait_for_termination() + if __name__ == '__main__': p = subprocess.run(["mkdir", "-p", "/mnt/main"]) - p = subprocess.run(["mount", "-t", "glusterfs", "%s:/%s" % (gluster_host, gluster_volume), "/mnt/main"],check=True) + p = subprocess.run(["mount", "-t", "glusterfs", "%s:/%s" % + (gluster_host, gluster_volume), "/mnt/main"], check=True) logging.basicConfig() serve()