Make parameters configurable via envoronment variables

This commit is contained in:
Fabian Stamm 2022-08-14 19:39:10 +02:00
parent 0be4bce96f
commit 2e6826a414

58
main.py
View File

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