Class: BrainzLab::Synapse::Client
- Inherits:
-
Object
- Object
- BrainzLab::Synapse::Client
- Defined in:
- lib/brainzlab/synapse/client.rb
Instance Method Summary collapse
-
#cancel_task(task_id) ⇒ Object
Cancel a running task.
-
#create_project(name:, repos: [], description: nil, **options) ⇒ Object
Create a new project.
-
#create_task(project_id:, description:, type: nil, priority: nil, **options) ⇒ Object
Create an AI task.
-
#deploy(project_id, environment:, options: {}) ⇒ Object
Deploy project to environment.
-
#exec(project_id, command:, container: nil, timeout: 30) ⇒ Object
Execute command in container.
-
#get_deployment(deployment_id) ⇒ Object
Get deployment status.
-
#get_logs(project_id, container: nil, lines: 100, since: nil) ⇒ Object
Get container logs.
-
#get_project(project_id) ⇒ Object
Get project details.
-
#get_task(task_id) ⇒ Object
Get task status.
-
#get_task_status(task_id) ⇒ Object
Get task status and progress.
-
#initialize(config) ⇒ Client
constructor
A new instance of Client.
-
#list_projects(status: nil, page: 1, per_page: 20) ⇒ Object
List all projects.
-
#list_tasks(project_id: nil, status: nil, page: 1, per_page: 20) ⇒ Object
List tasks for a project.
- #provision(project_id:, app_name:) ⇒ Object
-
#restart_project(project_id) ⇒ Object
Restart project containers.
-
#start_project(project_id) ⇒ Object
Start project containers.
-
#stop_project(project_id) ⇒ Object
Stop project containers.
Constructor Details
#initialize(config) ⇒ Client
Returns a new instance of Client.
10 11 12 13 |
# File 'lib/brainzlab/synapse/client.rb', line 10 def initialize(config) @config = config @base_url = config.synapse_url || 'https://synapse.brainzlab.ai' end |
Instance Method Details
#cancel_task(task_id) ⇒ Object
Cancel a running task
186 187 188 189 190 191 192 |
# File 'lib/brainzlab/synapse/client.rb', line 186 def cancel_task(task_id) response = request(:post, "/api/v1/tasks/#{task_id}/cancel") response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPAccepted) rescue StandardError => e log_error('cancel_task', e) false end |
#create_project(name:, repos: [], description: nil, **options) ⇒ Object
Create a new project
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/brainzlab/synapse/client.rb', line 44 def create_project(name:, repos: [], description: nil, **) response = request( :post, '/api/v1/projects', body: { name: name, description: description, repos: repos, ** } ) return nil unless response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPCreated) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('create_project', e) nil end |
#create_task(project_id:, description:, type: nil, priority: nil, **options) ⇒ Object
Create an AI task
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/brainzlab/synapse/client.rb', line 123 def create_task(project_id:, description:, type: nil, priority: nil, **) response = request( :post, '/api/v1/tasks', body: { project_id: project_id, description: description, type: type, priority: priority, ** } ) return nil unless response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPCreated) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('create_task', e) nil end |
#deploy(project_id, environment:, options: {}) ⇒ Object
Deploy project to environment
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/brainzlab/synapse/client.rb', line 92 def deploy(project_id, environment:, options: {}) response = request( :post, "/api/v1/projects/#{project_id}/deploy", body: { environment: environment, ** } ) return nil unless response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPAccepted) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('deploy', e) nil end |
#exec(project_id, command:, container: nil, timeout: 30) ⇒ Object
Execute command in container
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/brainzlab/synapse/client.rb', line 211 def exec(project_id, command:, container: nil, timeout: 30) response = request( :post, "/api/v1/projects/#{project_id}/exec", body: { command: command, container: container, timeout: timeout } ) return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('exec', e) nil end |
#get_deployment(deployment_id) ⇒ Object
Get deployment status
111 112 113 114 115 116 117 118 119 120 |
# File 'lib/brainzlab/synapse/client.rb', line 111 def get_deployment(deployment_id) response = request(:get, "/api/v1/deployments/#{deployment_id}") return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('get_deployment', e) nil end |
#get_logs(project_id, container: nil, lines: 100, since: nil) ⇒ Object
Get container logs
195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/brainzlab/synapse/client.rb', line 195 def get_logs(project_id, container: nil, lines: 100, since: nil) params = { lines: lines } params[:container] = container if container params[:since] = since if since response = request(:get, "/api/v1/projects/#{project_id}/logs", params: params) return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('get_logs', e) nil end |
#get_project(project_id) ⇒ Object
Get project details
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/brainzlab/synapse/client.rb', line 32 def get_project(project_id) response = request(:get, "/api/v1/projects/#{project_id}") return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('get_project', e) nil end |
#get_task(task_id) ⇒ Object
Get task status
145 146 147 148 149 150 151 152 153 154 |
# File 'lib/brainzlab/synapse/client.rb', line 145 def get_task(task_id) response = request(:get, "/api/v1/tasks/#{task_id}") return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('get_task', e) nil end |
#get_task_status(task_id) ⇒ Object
Get task status and progress
157 158 159 160 161 162 163 164 165 166 |
# File 'lib/brainzlab/synapse/client.rb', line 157 def get_task_status(task_id) response = request(:get, "/api/v1/tasks/#{task_id}/status") return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body, symbolize_names: true) rescue StandardError => e log_error('get_task_status', e) nil end |
#list_projects(status: nil, page: 1, per_page: 20) ⇒ Object
List all projects
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/brainzlab/synapse/client.rb', line 16 def list_projects(status: nil, page: 1, per_page: 20) params = { page: page, per_page: per_page } params[:status] = status if status response = request(:get, '/api/v1/projects', params: params) return [] unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body, symbolize_names: true) data[:projects] || [] rescue StandardError => e log_error('list_projects', e) [] end |
#list_tasks(project_id: nil, status: nil, page: 1, per_page: 20) ⇒ Object
List tasks for a project
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/brainzlab/synapse/client.rb', line 169 def list_tasks(project_id: nil, status: nil, page: 1, per_page: 20) params = { page: page, per_page: per_page } params[:project_id] = project_id if project_id params[:status] = status if status response = request(:get, '/api/v1/tasks', params: params) return [] unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body, symbolize_names: true) data[:tasks] || [] rescue StandardError => e log_error('list_tasks', e) [] end |
#provision(project_id:, app_name:) ⇒ Object
230 231 232 233 234 235 236 237 238 239 240 241 242 |
# File 'lib/brainzlab/synapse/client.rb', line 230 def provision(project_id:, app_name:) response = request( :post, '/api/v1/projects/provision', body: { project_id: project_id, app_name: app_name }, use_service_key: true ) response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPCreated) rescue StandardError => e log_error('provision', e) false end |
#restart_project(project_id) ⇒ Object
Restart project containers
83 84 85 86 87 88 89 |
# File 'lib/brainzlab/synapse/client.rb', line 83 def restart_project(project_id) response = request(:post, "/api/v1/projects/#{project_id}/restart") response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPAccepted) rescue StandardError => e log_error('restart_project', e) false end |
#start_project(project_id) ⇒ Object
Start project containers
65 66 67 68 69 70 71 |
# File 'lib/brainzlab/synapse/client.rb', line 65 def start_project(project_id) response = request(:post, "/api/v1/projects/#{project_id}/up") response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPAccepted) rescue StandardError => e log_error('start_project', e) false end |
#stop_project(project_id) ⇒ Object
Stop project containers
74 75 76 77 78 79 80 |
# File 'lib/brainzlab/synapse/client.rb', line 74 def stop_project(project_id) response = request(:post, "/api/v1/projects/#{project_id}/down") response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPAccepted) rescue StandardError => e log_error('stop_project', e) false end |