milvus 0.10.1 β†’ 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a4dd23dd2d85a1a231214808ee57ece287c47fde46084f726831dc47e7aaed7
4
- data.tar.gz: 52bca3e02f864a52c5c85c9f1aa725a16641fedaafb4b5ed8a7c6964664b9fe8
3
+ metadata.gz: c38f7235b815b1f48dd2d61e445b99ca675f974d1dddeba02796bf02e353fdd1
4
+ data.tar.gz: 4af6a551675f63cb17ee6f2c80a8ca000ea98ff028eeefa71f9593061ac04969
5
5
  SHA512:
6
- metadata.gz: 3c60bf9de09afaebc7cf0382529b07440680f50ed5f94c8ededb416f8cf29ddbaa7183527235c5daa12ce37412ca9b2b822e0b871d70fb67101ab291eb62c305
7
- data.tar.gz: 7b5b2b34f19ee53b33e025f6e9c170584fcf4b86c647e79c6acf519b0a3560e3b68f02fbcc60bdaafd27e41165704cf07dfdc1f4a52ddee198327ca7f8cd0278
6
+ metadata.gz: 37d2666740b3e9df096e5f8b024a72fff37b60c53810f8dcbd5f0b14c4a008060d5cad78109664b74d7e2e76d21c8559cbb6c079b046032acd09491c5a3c3109
7
+ data.tar.gz: 7c10d887561876c02e6f869807b01c339b2412137e3cefb584ce5451da815eafec06f5c4ea83bbd231862b9742aad08d711566a2660193016b9eb809eca7798b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.10.2] - 2024-07-28
4
+ - Added Roles management
5
+ - Added Users management
6
+ - Added docker-compose.yml with directions to run Milvus in Docker
7
+
3
8
  ## [0.10.1] - 2024-07-04 πŸ‡ΊπŸ‡Έ
4
9
  - Fixes and improvements to the gem.
5
10
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- milvus (0.10.1)
4
+ milvus (0.10.2)
5
5
  faraday (>= 2.0.1, < 3)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -22,6 +22,11 @@ Available for paid consulting engagements! [Email me](mailto:andrei@sourcelabs.i
22
22
  ## API Docs
23
23
  https://docs.zilliz.com/reference/restful/data-plane-v2
24
24
 
25
+ ## TODOs
26
+ - [X] Support for [User endpoints](https://docs.zilliz.com/reference/restful/user-operations-v2)
27
+ - [X] Support for [Role endpoints](https://docs.zilliz.com/reference/restful/role-operations-v2)
28
+ - [ ] Support for [Alias endpoints](https://docs.zilliz.com/reference/restful/alias-operations-v2)
29
+
25
30
  ## Installation
26
31
 
27
32
  Install the gem and add to the application's Gemfile by executing:
@@ -267,12 +272,62 @@ client.partitions.drop(
267
272
  )
268
273
  ```
269
274
 
275
+ ### Roles
276
+ ```ruby
277
+ # List roles available on the server
278
+ client.roles.list
279
+ ```
280
+ ```ruby
281
+ # Describe the role
282
+ client.roles.describe(role_name: 'public')
283
+ ```
284
+
285
+ ### Users
286
+ ```ruby
287
+ # Create new user
288
+ client.users.create(user_name: 'user_name', password: 'password')
289
+ ```
290
+ ```ruby
291
+ # List of roles assigned to the user
292
+ client.users.describe(user_name: 'user_name')
293
+ ```
294
+ ```ruby
295
+ # List all users in the specified database.
296
+ client.users.list
297
+ ```
298
+ ```ruby
299
+ # Drop existing user
300
+ client.users.drop(user_name: 'user_name')
301
+ ```
302
+ ```ruby
303
+ # Update password for the user
304
+ client.users.update_password(user_name: 'user_name', password: 'old_password', new_password: 'new_password')
305
+ ```
306
+ ```ruby
307
+ # Grant role to the user
308
+ client.users.grant_role(user_name: 'user_name', role_name: 'admin')
309
+ ```
310
+ ```ruby
311
+ # Revoke role from the user
312
+ client.users.revoke_role(user_name: 'user_name', role_name: 'admin')
313
+ ```
314
+
270
315
  ## Development
271
316
 
272
317
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
273
318
 
274
319
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
275
320
 
321
+ ## Development with Docker
322
+
323
+ Run `docker compose run --rm ruby_app bash` and install required gems (`bundle install`). It will give you a fully working development environment with Milvius services and gem's code.
324
+
325
+ For example inside docker container run `bin/console` and inside the ruby console:
326
+ ```ruby
327
+ client = Milvus::Client.new(url: ENV["MILVUS_URL"])
328
+ client.collections.list
329
+ ```
330
+
276
331
  ## Contributing
277
332
 
278
333
  Bug reports and pull requests are welcome on GitHub at https://github.com/patterns-ai-core/milvus.
@@ -0,0 +1,77 @@
1
+ services:
2
+ ruby_app:
3
+ image: ruby:bullseye
4
+ working_dir: /usr/src/app
5
+ volumes:
6
+ - .:/usr/src/app
7
+ - bundle:/usr/local/bundle
8
+ depends_on:
9
+ - standalone
10
+ environment:
11
+ MILVUS_URL: "http://standalone:19530"
12
+
13
+ etcd:
14
+ container_name: milvus-etcd
15
+ image: quay.io/coreos/etcd:v3.5.5
16
+ environment:
17
+ - ETCD_AUTO_COMPACTION_MODE=revision
18
+ - ETCD_AUTO_COMPACTION_RETENTION=1000
19
+ - ETCD_QUOTA_BACKEND_BYTES=4294967296
20
+ - ETCD_SNAPSHOT_COUNT=50000
21
+ volumes:
22
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
23
+ command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
24
+ healthcheck:
25
+ test: ["CMD", "etcdctl", "endpoint", "health"]
26
+ interval: 30s
27
+ timeout: 20s
28
+ retries: 3
29
+
30
+ minio:
31
+ container_name: milvus-minio
32
+ image: minio/minio:RELEASE.2023-03-20T20-16-18Z
33
+ environment:
34
+ MINIO_ACCESS_KEY: minioadmin
35
+ MINIO_SECRET_KEY: minioadmin
36
+ ports:
37
+ - "9001:9001"
38
+ - "9000:9000"
39
+ volumes:
40
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
41
+ command: minio server /minio_data --console-address ":9001"
42
+ healthcheck:
43
+ test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
44
+ interval: 30s
45
+ timeout: 20s
46
+ retries: 3
47
+
48
+ standalone:
49
+ container_name: milvus-standalone
50
+ image: milvusdb/milvus:v2.4.5
51
+ command: ["milvus", "run", "standalone"]
52
+ security_opt:
53
+ - seccomp:unconfined
54
+ environment:
55
+ ETCD_ENDPOINTS: etcd:2379
56
+ MINIO_ADDRESS: minio:9000
57
+ volumes:
58
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
59
+ healthcheck:
60
+ test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
61
+ interval: 30s
62
+ start_period: 90s
63
+ timeout: 20s
64
+ retries: 3
65
+ ports:
66
+ - "19530:19530"
67
+ - "9091:9091"
68
+ depends_on:
69
+ - "etcd"
70
+ - "minio"
71
+
72
+ networks:
73
+ default:
74
+ name: milvus
75
+
76
+ volumes:
77
+ bundle:
data/lib/milvus/client.rb CHANGED
@@ -29,6 +29,14 @@ module Milvus
29
29
  @indexes ||= Milvus::Indexes.new(client: self)
30
30
  end
31
31
 
32
+ def roles
33
+ @roles ||= Milvus::Roles.new(client: self)
34
+ end
35
+
36
+ def users
37
+ @users ||= Milvus::Users.new(client: self)
38
+ end
39
+
32
40
  def connection
33
41
  @connection ||= Faraday.new(url: "#{url}/#{API_VERSION}/") do |faraday|
34
42
  if api_key
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Milvus
4
+ class Roles < Base
5
+ PATH = "roles"
6
+
7
+ # Lists available roles on the server
8
+ #
9
+ # @return [Hash] The response from the server.
10
+ def list
11
+ response = client.connection.post("#{PATH}/list") do |req|
12
+ req.body = {}
13
+ end
14
+
15
+ response.body
16
+ end
17
+
18
+ # This operation inserts data into a specific collection.
19
+ #
20
+ # @param role_name [String] The name of the collection to insert data into.
21
+ # @return [Hash] The response from the server.
22
+ def describe(role_name:)
23
+ response = client.connection.post("#{PATH}/describe") do |req|
24
+ req.body = {
25
+ roleName: role_name
26
+ }
27
+ end
28
+
29
+ response.body
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Milvus
4
+ class Users < Base
5
+ PATH = "users"
6
+
7
+ # Create a user
8
+ #
9
+ # @param user_name [String] Username for the user
10
+ # @param password [String] Password for the user
11
+ # @return [Hash] Server response
12
+ def create(user_name:, password:)
13
+ response = client.connection.post("#{PATH}/create") do |req|
14
+ req.body = {
15
+ userName: user_name,
16
+ password: password
17
+ }
18
+ end
19
+
20
+ response.body
21
+ end
22
+
23
+ # Describe a user
24
+ #
25
+ # @param user_name [String] Username for the user
26
+ # @return [Hash] Server response
27
+ def describe(user_name:)
28
+ response = client.connection.post("#{PATH}/describe") do |req|
29
+ req.body = {
30
+ userName: user_name
31
+ }
32
+ end
33
+
34
+ response.body
35
+ end
36
+
37
+ # List users
38
+ #
39
+ # @return [Hash] Server response
40
+ def list
41
+ response = client.connection.post("#{PATH}/list") do |req|
42
+ req.body = {}
43
+ end
44
+
45
+ response.body
46
+ end
47
+
48
+ # Drops a user
49
+ #
50
+ # @param user_name [String] Username for the user
51
+ # @return [Hash] Server response
52
+ def drop(user_name:)
53
+ response = client.connection.post("#{PATH}/drop") do |req|
54
+ req.body = {
55
+ userName: user_name
56
+ }
57
+ end
58
+
59
+ response.body
60
+ end
61
+
62
+ def update_password(user_name:, password:, new_password:)
63
+ response = client.connection.post("#{PATH}/update_password") do |req|
64
+ req.body = {
65
+ userName: user_name,
66
+ password: password,
67
+ newPassword: new_password
68
+ }
69
+ end
70
+
71
+ response.body
72
+ end
73
+
74
+ def grant_role(user_name:, role_name:)
75
+ response = client.connection.post("#{PATH}/grant_role") do |req|
76
+ req.body = {
77
+ userName: user_name,
78
+ roleName: role_name
79
+ }
80
+ end
81
+
82
+ response.body
83
+ end
84
+
85
+ def revoke_role(user_name:, role_name:)
86
+ response = client.connection.post("#{PATH}/revoke_role") do |req|
87
+ req.body = {
88
+ userName: user_name,
89
+ roleName: role_name
90
+ }
91
+ end
92
+
93
+ response.body
94
+ end
95
+ end
96
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Milvus
4
- VERSION = "0.10.1"
4
+ VERSION = "0.10.2"
5
5
  end
data/lib/milvus.rb CHANGED
@@ -11,4 +11,6 @@ module Milvus
11
11
  autoload :Entities, "milvus/entities"
12
12
  autoload :Indexes, "milvus/indexes"
13
13
  autoload :Partitions, "milvus/partitions"
14
+ autoload :Roles, "milvus/roles"
15
+ autoload :Users, "milvus/users"
14
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milvus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Bondarev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-04 00:00:00.000000000 Z
11
+ date: 2024-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -60,6 +60,7 @@ files:
60
60
  - LICENSE
61
61
  - README.md
62
62
  - Rakefile
63
+ - docker-compose.yml
63
64
  - lib/milvus.rb
64
65
  - lib/milvus/base.rb
65
66
  - lib/milvus/client.rb
@@ -69,6 +70,8 @@ files:
69
70
  - lib/milvus/error.rb
70
71
  - lib/milvus/indexes.rb
71
72
  - lib/milvus/partitions.rb
73
+ - lib/milvus/roles.rb
74
+ - lib/milvus/users.rb
72
75
  - lib/milvus/version.rb
73
76
  - sig/milvus.rbs
74
77
  homepage: https://github.com/andreibondarev/milvus