about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Romfeld <peter.romfeld.hk@gmail.com>2019-01-31 10:38:48 +0800
committerFlorian Klink <flokli@flokli.de>2019-03-29 15:50:36 +0100
commit364cbd088ef572a127731c140748d5a4be8c68d4 (patch)
tree40807327a2f5110aa300219e8eefc7219c546e88
parent84067b7ef1f35a405f1201e8372f62e876e22ab6 (diff)
minio: init at 4.0.13
-rw-r--r--nixos/tests/minio.nix29
-rw-r--r--pkgs/development/python-modules/minio/default.nix24
-rw-r--r--pkgs/top-level/python-packages.nix2
3 files changed, 51 insertions, 4 deletions
diff --git a/nixos/tests/minio.nix b/nixos/tests/minio.nix
index 40a599546650a..f1218b537711a 100644
--- a/nixos/tests/minio.nix
+++ b/nixos/tests/minio.nix
@@ -1,4 +1,24 @@
-import ./make-test.nix ({ pkgs, ...} : {
+import ./make-test.nix ({ pkgs, ...} :
+let
+    accessKey = "BKIKJAA5BMMU2RHO6IBB";
+    secretKey = "V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12";
+    minioPythonScript = pkgs.writeScript "minio-test.py" ''
+      #! ${pkgs.python3.withPackages(ps: [ ps.minio ])}/bin/python
+      import io
+      import os
+      from minio import Minio
+      minioClient = Minio('localhost:9000',
+                    access_key='${accessKey}',
+                    secret_key='${secretKey}',
+                    secure=False)
+      sio = io.BytesIO()
+      sio.write(b'Test from Python')
+      sio.seek(0, os.SEEK_END)
+      sio_len = sio.tell()
+      sio.seek(0)
+      minioClient.put_object('test-bucket', 'test.txt', sio, sio_len, content_type='text/plain')
+    '';
+  in {
   name = "minio";
   meta = with pkgs.stdenv.lib.maintainers; {
     maintainers = [ bachp ];
@@ -8,8 +28,7 @@ import ./make-test.nix ({ pkgs, ...} : {
     machine = { pkgs, ... }: {
       services.minio = {
         enable = true;
-        accessKey = "BKIKJAA5BMMU2RHO6IBB";
-        secretKey = "V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12";
+        inherit accessKey secretKey;
       };
       environment.systemPackages = [ pkgs.minio-client ];
 
@@ -25,9 +44,11 @@ import ./make-test.nix ({ pkgs, ...} : {
       $machine->waitForOpenPort(9000);
 
       # Create a test bucket on the server
-      $machine->succeed("mc config host add minio http://localhost:9000 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 S3v4");
+      $machine->succeed("mc config host add minio http://localhost:9000 ${accessKey} ${secretKey} S3v4");
       $machine->succeed("mc mb minio/test-bucket");
+      $machine->succeed("${minioPythonScript}");
       $machine->succeed("mc ls minio") =~ /test-bucket/ or die;
+      $machine->succeed("mc cat minio/test-bucket/test.txt") =~ /Test from Python/ or die;
       $machine->shutdown;
 
     '';
diff --git a/pkgs/development/python-modules/minio/default.nix b/pkgs/development/python-modules/minio/default.nix
new file mode 100644
index 0000000000000..c8595f0383e70
--- /dev/null
+++ b/pkgs/development/python-modules/minio/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, buildPythonPackage, isPy3k, fetchPypi
+, urllib3, python-dateutil , pytz, faker, mock, nose }:
+
+buildPythonPackage rec {
+  pname = "minio";
+  version = "4.0.13";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1sbmv1lskm5cs3jmn8f2688pimgibly16g8ycc6fgnsjanyby35l";
+  };
+
+  disabled = !isPy3k;
+
+  checkInputs = [ faker mock nose ];
+  propagatedBuildInputs = [ urllib3 python-dateutil pytz ];
+
+  meta = with lib; {
+    description = "Simple APIs to access any Amazon S3 compatible object storage server";
+    homepage = https://github.com/minio/minio-py;
+    maintainers = with maintainers; [ peterromfeldhk ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 285f0e87fa1c6..eb1e2f5f15dd8 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -3192,6 +3192,8 @@ in {
 
   minimock = callPackage ../development/python-modules/minimock { };
 
+  minio = callPackage ../development/python-modules/minio { };
+
   moviepy = callPackage ../development/python-modules/moviepy { };
 
   mozterm = callPackage ../development/python-modules/mozterm { };