mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-04 22:17:59 +08:00

* Upgrade InfluxDB from 1.x to 2.x Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influx DB configuration updated Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Connection to InfluxDBv2 Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Token cannot be created Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Connected to InfluxDB2 Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Connected to InfluxDB2 Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * InfluxDB v2 Consumer Implementation Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * quickfix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb-Writer Unit Tests Update Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Consumer Update Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * InfluxDB Writer Tests Implemented Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * InfluxDB Connection Check Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolving Remarks Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved consumer-test remark Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * consumer-test slow working version Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * reader changes Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Consumer tests time issue fixed Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Eof warning fixed Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Makefile Fixed Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Readers Initial Setup Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * consumer json fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb Reader Parsers Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb Reader Parsers Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb Reader Parsers Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Bugfix and resolves comments. Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * one test fails Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * solved last page read Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * writers future time problem fixed Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * weird Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * weird Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Tests Passes Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolve Semaphore Issues Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * UUID comment on consumer tests resolved Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Inclusive from and Exclusive to Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Inclusive from and Exclusive to Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * 1 second limits Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * 1 second limits Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * fixed json time Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * fixed CI error Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved request Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved request Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved requests Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * removed blank line Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved comment Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * deleted unnecessary string builder Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * initial commit Signed-off-by: aryan <aryangodara03@gmail.com> * change influxdb docker image version. Signed-off-by: aryan <aryangodara03@gmail.com> * go mod and vendor fixing Signed-off-by: aryan <aryangodara03@gmail.com> * Upgrade InfluxDB from 1.x to 2.x Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influx DB configuration updated Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Connection to InfluxDBv2 Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Token cannot be created Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Connected to InfluxDB2 Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Connected to InfluxDB2 Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * InfluxDB v2 Consumer Implementation Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * quickfix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb-Writer Unit Tests Update Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Consumer Update Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * InfluxDB Writer Tests Implemented Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * InfluxDB Connection Check Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolving Remarks Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved consumer-test remark Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * consumer-test slow working version Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * reader changes Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Consumer tests time issue fixed Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolved Reviews Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Readers Initial Setup Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * consumer json fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * readers simple version fix Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb Reader Parsers Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb Reader Parsers Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Influxdb Reader Parsers Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Bugfix and resolves comments. Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * one test fails Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * solved last page read Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * writers future time problem fixed Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * weird Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * weird Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Tests Passes Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Resolve Semaphore Issues Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * UUID comment on consumer tests resolved Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Inclusive from and Exclusive to Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * Inclusive from and Exclusive to Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * 1 second limits Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * 1 second limits Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved review Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * fixed json time Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * fixed CI error Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved request Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved request Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved requests Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * removed blank line Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * resolved comment Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * deleted unnecessary string builder Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> * initial commit Signed-off-by: aryan <aryangodara03@gmail.com> * change influxdb docker image version. Signed-off-by: aryan <aryangodara03@gmail.com> * go mod and vendor fixing Signed-off-by: aryan <aryangodara03@gmail.com> * go mod fixing Signed-off-by: aryan <aryangodara03@gmail.com> * make tests pass locally, fix errors Signed-off-by: aryan <aryangodara03@gmail.com> * rem unsused variables/consts Signed-off-by: aryan <aryangodara03@gmail.com> * go mod tidy vendor Signed-off-by: aryan <aryangodara03@gmail.com> * add env var and data types Signed-off-by: aryan <aryangodara03@gmail.com> * update influxdb version to latest (2.3 to 2.12) Signed-off-by: aryan <aryangodara03@gmail.com> * change time precision for message tests Signed-off-by: aryan <aryangodara03@gmail.com> * renamed influxdb2 to influxdata Signed-off-by: aryan <aryangodara03@gmail.com> * address remarks on PR Signed-off-by: aryan <aryangodara03@gmail.com> * update influxbd according to latest mf commit Signed-off-by: aryan <aryangodara03@gmail.com> * temp commit, rem before pushing Signed-off-by: aryan <aryangodara03@gmail.com> * update main files and cassandra-reader messages_tests Signed-off-by: aryan <aryangodara03@gmail.com> * fix name of logger while importing Signed-off-by: aryan <aryangodara03@gmail.com> * remove unnecessary print lines Signed-off-by: aryan <aryangodara03@gmail.com> * correct env var name Signed-off-by: aryan <aryangodara03@gmail.com> * change to async consume Signed-off-by: aryan <aryangodara03@gmail.com> * add option to switch bw sync and async Signed-off-by: aryan <aryangodara03@gmail.com> * test for both async and sync Signed-off-by: aryan <aryangodara03@gmail.com> * update consumer and add writeAPIs to config Signed-off-by: aryan <aryangodara03@gmail.com> * revert back to sync consuming Signed-off-by: aryan <aryangodara03@gmail.com> * temp fix for default timeout value Signed-off-by: aryan <aryangodara03@gmail.com> * set default timeout in config. Signed-off-by: aryan <aryangodara03@gmail.com> * remove unwanted env vars, add required ones. Signed-off-by: aryan <aryangodara03@gmail.com> * rem unused username password from config Signed-off-by: aryan <aryangodara03@gmail.com> * update readme, env vars, and remove grafana Signed-off-by: aryan <aryangodara03@gmail.com> * update readme Signed-off-by: aryan <aryangodara03@gmail.com> * fix typo Signed-off-by: aryan <aryangodara03@gmail.com> * update readme description. Signed-off-by: aryan <aryangodara03@gmail.com> * fix more typos. Signed-off-by: aryan <aryangodara03@gmail.com> * add link to official docs to readme. Signed-off-by: aryan <aryangodara03@gmail.com> --------- Signed-off-by: fatih <fatihdurmaz@sabanciuniv.edu> Signed-off-by: aryan <aryangodara03@gmail.com> Co-authored-by: fatih <fatihdurmaz@sabanciuniv.edu> Co-authored-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
512 lines
19 KiB
Go
512 lines
19 KiB
Go
// Copyright 2020-2021 InfluxData, Inc. All rights reserved.
|
|
// Use of this source code is governed by MIT
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package api
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/influxdata/influxdb-client-go/v2/domain"
|
|
)
|
|
|
|
// TaskFilter defines filtering options for FindTasks functions.
|
|
type TaskFilter struct {
|
|
// Returns task with a specific name
|
|
Name string
|
|
// Filter tasks to a specific organization name.
|
|
OrgName string
|
|
// Filter tasks to a specific organization ID.
|
|
OrgID string
|
|
// Filter tasks to a specific user ID.
|
|
User string
|
|
// Filter tasks by a status--"inactive" or "active".
|
|
Status domain.TaskStatusType
|
|
// Return tasks after a specified ID.
|
|
After string
|
|
// The number of tasks to return.
|
|
// Default 100, minimum: 1, maximum 500
|
|
Limit int
|
|
}
|
|
|
|
// RunFilter defines filtering options for FindRun* functions.
|
|
type RunFilter struct {
|
|
// Return runs after a specified ID.
|
|
After string
|
|
// The number of runs to return.
|
|
// Default 100, minimum 1, maximum 500.
|
|
Limit int
|
|
// Filter runs to those scheduled before this time.
|
|
BeforeTime time.Time
|
|
// Filter runs to those scheduled after this time.
|
|
AfterTime time.Time
|
|
}
|
|
|
|
// TasksAPI provides methods for managing tasks and task runs in an InfluxDB server.
|
|
type TasksAPI interface {
|
|
// FindTasks retrieves tasks according to the filter. More fields can be applied. Filter can be nil.
|
|
FindTasks(ctx context.Context, filter *TaskFilter) ([]domain.Task, error)
|
|
// GetTask retrieves a refreshed instance of task.
|
|
GetTask(ctx context.Context, task *domain.Task) (*domain.Task, error)
|
|
// GetTaskByID retrieves a task found using taskID.
|
|
GetTaskByID(ctx context.Context, taskID string) (*domain.Task, error)
|
|
// CreateTask creates a new task according the task object.
|
|
// It copies OrgId, Name, Description, Flux, Status and Every or Cron properties. Every and Cron are mutually exclusive.
|
|
// Every has higher priority.
|
|
CreateTask(ctx context.Context, task *domain.Task) (*domain.Task, error)
|
|
// CreateTaskWithEvery creates a new task with the name, flux script and every repetition setting, in the org orgID.
|
|
// Every means duration values.
|
|
CreateTaskWithEvery(ctx context.Context, name, flux, every, orgID string) (*domain.Task, error)
|
|
// CreateTaskWithCron creates a new task with the name, flux script and cron repetition setting, in the org orgID
|
|
// Cron holds cron-like setting, e.g. once an hour at beginning of the hour "0 * * * *".
|
|
CreateTaskWithCron(ctx context.Context, name, flux, cron, orgID string) (*domain.Task, error)
|
|
// CreateTaskByFlux creates a new task with complete definition in flux script, in the org orgID
|
|
CreateTaskByFlux(ctx context.Context, flux, orgID string) (*domain.Task, error)
|
|
// UpdateTask updates a task.
|
|
// It copies Description, Flux, Status, Offset and Every or Cron properties. Every and Cron are mutually exclusive.
|
|
// Every has higher priority.
|
|
UpdateTask(ctx context.Context, task *domain.Task) (*domain.Task, error)
|
|
// DeleteTask deletes a task.
|
|
DeleteTask(ctx context.Context, task *domain.Task) error
|
|
// DeleteTaskWithID deletes a task with taskID.
|
|
DeleteTaskWithID(ctx context.Context, taskID string) error
|
|
// FindMembers retrieves members of a task.
|
|
FindMembers(ctx context.Context, task *domain.Task) ([]domain.ResourceMember, error)
|
|
// FindMembersWithID retrieves members of a task with taskID.
|
|
FindMembersWithID(ctx context.Context, taskID string) ([]domain.ResourceMember, error)
|
|
// AddMember adds a member to a task.
|
|
AddMember(ctx context.Context, task *domain.Task, user *domain.User) (*domain.ResourceMember, error)
|
|
// AddMemberWithID adds a member with id memberID to a task with taskID.
|
|
AddMemberWithID(ctx context.Context, taskID, memberID string) (*domain.ResourceMember, error)
|
|
// RemoveMember removes a member from a task.
|
|
RemoveMember(ctx context.Context, task *domain.Task, user *domain.User) error
|
|
// RemoveMemberWithID removes a member with id memberID from a task with taskID.
|
|
RemoveMemberWithID(ctx context.Context, taskID, memberID string) error
|
|
// FindOwners retrieves owners of a task.
|
|
FindOwners(ctx context.Context, task *domain.Task) ([]domain.ResourceOwner, error)
|
|
// FindOwnersWithID retrieves owners of a task with taskID.
|
|
FindOwnersWithID(ctx context.Context, taskID string) ([]domain.ResourceOwner, error)
|
|
// AddOwner adds an owner to a task.
|
|
AddOwner(ctx context.Context, task *domain.Task, user *domain.User) (*domain.ResourceOwner, error)
|
|
// AddOwnerWithID adds an owner with id memberID to a task with taskID.
|
|
AddOwnerWithID(ctx context.Context, taskID, memberID string) (*domain.ResourceOwner, error)
|
|
// RemoveOwner removes an owner from a task.
|
|
RemoveOwner(ctx context.Context, task *domain.Task, user *domain.User) error
|
|
// RemoveOwnerWithID removes a member with id memberID from a task with taskID.
|
|
RemoveOwnerWithID(ctx context.Context, taskID, memberID string) error
|
|
// FindRuns retrieves a task runs according the filter. More fields can be applied. Filter can be nil.
|
|
FindRuns(ctx context.Context, task *domain.Task, filter *RunFilter) ([]domain.Run, error)
|
|
// FindRunsWithID retrieves runs of a task with taskID according the filter. More fields can be applied. Filter can be nil.
|
|
FindRunsWithID(ctx context.Context, taskID string, filter *RunFilter) ([]domain.Run, error)
|
|
// GetRun retrieves a refreshed instance if a task run.
|
|
GetRun(ctx context.Context, run *domain.Run) (*domain.Run, error)
|
|
// GetRunByID retrieves a specific task run by taskID and runID
|
|
GetRunByID(ctx context.Context, taskID, runID string) (*domain.Run, error)
|
|
// FindRunLogs return all log events for a task run.
|
|
FindRunLogs(ctx context.Context, run *domain.Run) ([]domain.LogEvent, error)
|
|
// FindRunLogsWithID return all log events for a run with runID of a task with taskID.
|
|
FindRunLogsWithID(ctx context.Context, taskID, runID string) ([]domain.LogEvent, error)
|
|
// RunManually manually start a run of the task now, overriding the current schedule.
|
|
RunManually(ctx context.Context, task *domain.Task) (*domain.Run, error)
|
|
// RunManuallyWithID manually start a run of a task with taskID now, overriding the current schedule.
|
|
RunManuallyWithID(ctx context.Context, taskID string) (*domain.Run, error)
|
|
// RetryRun retry a task run.
|
|
RetryRun(ctx context.Context, run *domain.Run) (*domain.Run, error)
|
|
// RetryRunWithID retry a run with runID of a task with taskID.
|
|
RetryRunWithID(ctx context.Context, taskID, runID string) (*domain.Run, error)
|
|
// CancelRun cancels a running task.
|
|
CancelRun(ctx context.Context, run *domain.Run) error
|
|
// CancelRunWithID cancels a running task.
|
|
CancelRunWithID(ctx context.Context, taskID, runID string) error
|
|
// FindLogs retrieves all logs for a task.
|
|
FindLogs(ctx context.Context, task *domain.Task) ([]domain.LogEvent, error)
|
|
// FindLogsWithID retrieves all logs for a task with taskID.
|
|
FindLogsWithID(ctx context.Context, taskID string) ([]domain.LogEvent, error)
|
|
// FindLabels retrieves labels of a task.
|
|
FindLabels(ctx context.Context, task *domain.Task) ([]domain.Label, error)
|
|
// FindLabelsWithID retrieves labels of a task with taskID.
|
|
FindLabelsWithID(ctx context.Context, taskID string) ([]domain.Label, error)
|
|
// AddLabel adds a label to a task.
|
|
AddLabel(ctx context.Context, task *domain.Task, label *domain.Label) (*domain.Label, error)
|
|
// AddLabelWithID adds a label with id labelID to a task with taskID.
|
|
AddLabelWithID(ctx context.Context, taskID, labelID string) (*domain.Label, error)
|
|
// RemoveLabel removes a label from a task.
|
|
RemoveLabel(ctx context.Context, task *domain.Task, label *domain.Label) error
|
|
// RemoveLabelWithID removes a label with id labelID from a task with taskID.
|
|
RemoveLabelWithID(ctx context.Context, taskID, labelID string) error
|
|
}
|
|
|
|
// tasksAPI implements TasksAPI
|
|
type tasksAPI struct {
|
|
apiClient *domain.Client
|
|
}
|
|
|
|
// NewTasksAPI creates new instance of TasksAPI
|
|
func NewTasksAPI(apiClient *domain.Client) TasksAPI {
|
|
return &tasksAPI{
|
|
apiClient: apiClient,
|
|
}
|
|
}
|
|
|
|
func (t *tasksAPI) FindTasks(ctx context.Context, filter *TaskFilter) ([]domain.Task, error) {
|
|
params := &domain.GetTasksParams{}
|
|
if filter != nil {
|
|
if filter.Name != "" {
|
|
params.Name = &filter.Name
|
|
}
|
|
if filter.User != "" {
|
|
params.User = &filter.User
|
|
}
|
|
if filter.OrgID != "" {
|
|
params.OrgID = &filter.OrgID
|
|
}
|
|
if filter.OrgName != "" {
|
|
params.Org = &filter.OrgName
|
|
}
|
|
if filter.Status != "" {
|
|
status := domain.GetTasksParamsStatus(filter.Status)
|
|
params.Status = &status
|
|
}
|
|
if filter.Limit > 0 {
|
|
params.Limit = &filter.Limit
|
|
}
|
|
if filter.After != "" {
|
|
params.After = &filter.After
|
|
}
|
|
}
|
|
|
|
response, err := t.apiClient.GetTasks(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return *response.Tasks, nil
|
|
}
|
|
|
|
func (t *tasksAPI) GetTask(ctx context.Context, task *domain.Task) (*domain.Task, error) {
|
|
return t.GetTaskByID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) GetTaskByID(ctx context.Context, taskID string) (*domain.Task, error) {
|
|
params := &domain.GetTasksIDAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
return t.apiClient.GetTasksID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) createTask(ctx context.Context, taskReq *domain.TaskCreateRequest) (*domain.Task, error) {
|
|
params := &domain.PostTasksAllParams{
|
|
Body: domain.PostTasksJSONRequestBody(*taskReq),
|
|
}
|
|
return t.apiClient.PostTasks(ctx, params)
|
|
}
|
|
|
|
func createTaskReqDetailed(name, flux string, every, cron *string, orgID string) *domain.TaskCreateRequest {
|
|
repetition := ""
|
|
if every != nil {
|
|
repetition = fmt.Sprintf("every: %s", *every)
|
|
} else if cron != nil {
|
|
repetition = fmt.Sprintf(`cron: "%s"`, *cron)
|
|
}
|
|
fullFlux := fmt.Sprintf(`option task = { name: "%s", %s } %s`, name, repetition, flux)
|
|
return createTaskReq(fullFlux, orgID)
|
|
}
|
|
func createTaskReq(flux string, orgID string) *domain.TaskCreateRequest {
|
|
|
|
status := domain.TaskStatusTypeActive
|
|
taskReq := &domain.TaskCreateRequest{
|
|
Flux: flux,
|
|
Status: &status,
|
|
OrgID: &orgID,
|
|
}
|
|
return taskReq
|
|
}
|
|
|
|
func (t *tasksAPI) CreateTask(ctx context.Context, task *domain.Task) (*domain.Task, error) {
|
|
taskReq := createTaskReqDetailed(task.Name, task.Flux, task.Every, task.Cron, task.OrgID)
|
|
taskReq.Description = task.Description
|
|
taskReq.Status = task.Status
|
|
return t.createTask(ctx, taskReq)
|
|
}
|
|
|
|
func (t *tasksAPI) CreateTaskWithEvery(ctx context.Context, name, flux, every, orgID string) (*domain.Task, error) {
|
|
taskReq := createTaskReqDetailed(name, flux, &every, nil, orgID)
|
|
return t.createTask(ctx, taskReq)
|
|
}
|
|
|
|
func (t *tasksAPI) CreateTaskWithCron(ctx context.Context, name, flux, cron, orgID string) (*domain.Task, error) {
|
|
taskReq := createTaskReqDetailed(name, flux, nil, &cron, orgID)
|
|
return t.createTask(ctx, taskReq)
|
|
}
|
|
|
|
func (t *tasksAPI) CreateTaskByFlux(ctx context.Context, flux, orgID string) (*domain.Task, error) {
|
|
taskReq := createTaskReq(flux, orgID)
|
|
return t.createTask(ctx, taskReq)
|
|
}
|
|
|
|
func (t *tasksAPI) DeleteTask(ctx context.Context, task *domain.Task) error {
|
|
return t.DeleteTaskWithID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) DeleteTaskWithID(ctx context.Context, taskID string) error {
|
|
params := &domain.DeleteTasksIDAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
return t.apiClient.DeleteTasksID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) UpdateTask(ctx context.Context, task *domain.Task) (*domain.Task, error) {
|
|
params := &domain.PatchTasksIDAllParams{
|
|
Body: domain.PatchTasksIDJSONRequestBody(domain.TaskUpdateRequest{
|
|
Description: task.Description,
|
|
Flux: &task.Flux,
|
|
Name: &task.Name,
|
|
Offset: task.Offset,
|
|
Status: task.Status,
|
|
}),
|
|
TaskID: task.Id,
|
|
}
|
|
if task.Every != nil {
|
|
params.Body.Every = task.Every
|
|
} else {
|
|
params.Body.Cron = task.Cron
|
|
}
|
|
return t.apiClient.PatchTasksID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) FindMembers(ctx context.Context, task *domain.Task) ([]domain.ResourceMember, error) {
|
|
return t.FindMembersWithID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) FindMembersWithID(ctx context.Context, taskID string) ([]domain.ResourceMember, error) {
|
|
params := &domain.GetTasksIDMembersAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
response, err := t.apiClient.GetTasksIDMembers(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return *response.Users, nil
|
|
}
|
|
|
|
func (t *tasksAPI) AddMember(ctx context.Context, task *domain.Task, user *domain.User) (*domain.ResourceMember, error) {
|
|
return t.AddMemberWithID(ctx, task.Id, *user.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) AddMemberWithID(ctx context.Context, taskID, memberID string) (*domain.ResourceMember, error) {
|
|
params := &domain.PostTasksIDMembersAllParams{
|
|
TaskID: taskID,
|
|
Body: domain.PostTasksIDMembersJSONRequestBody{Id: memberID},
|
|
}
|
|
|
|
return t.apiClient.PostTasksIDMembers(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) RemoveMember(ctx context.Context, task *domain.Task, user *domain.User) error {
|
|
return t.RemoveMemberWithID(ctx, task.Id, *user.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) RemoveMemberWithID(ctx context.Context, taskID, memberID string) error {
|
|
params := &domain.DeleteTasksIDMembersIDAllParams{
|
|
TaskID: taskID,
|
|
UserID: memberID,
|
|
}
|
|
return t.apiClient.DeleteTasksIDMembersID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) FindOwners(ctx context.Context, task *domain.Task) ([]domain.ResourceOwner, error) {
|
|
return t.FindOwnersWithID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) FindOwnersWithID(ctx context.Context, taskID string) ([]domain.ResourceOwner, error) {
|
|
params := &domain.GetTasksIDOwnersAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
response, err := t.apiClient.GetTasksIDOwners(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return *response.Users, nil
|
|
}
|
|
|
|
func (t *tasksAPI) AddOwner(ctx context.Context, task *domain.Task, user *domain.User) (*domain.ResourceOwner, error) {
|
|
return t.AddOwnerWithID(ctx, task.Id, *user.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) AddOwnerWithID(ctx context.Context, taskID, memberID string) (*domain.ResourceOwner, error) {
|
|
params := &domain.PostTasksIDOwnersAllParams{
|
|
Body: domain.PostTasksIDOwnersJSONRequestBody{Id: memberID},
|
|
TaskID: taskID,
|
|
}
|
|
return t.apiClient.PostTasksIDOwners(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) RemoveOwner(ctx context.Context, task *domain.Task, user *domain.User) error {
|
|
return t.RemoveOwnerWithID(ctx, task.Id, *user.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) RemoveOwnerWithID(ctx context.Context, taskID, memberID string) error {
|
|
params := &domain.DeleteTasksIDOwnersIDAllParams{
|
|
TaskID: taskID,
|
|
UserID: memberID,
|
|
}
|
|
return t.apiClient.DeleteTasksIDOwnersID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) FindRuns(ctx context.Context, task *domain.Task, filter *RunFilter) ([]domain.Run, error) {
|
|
return t.FindRunsWithID(ctx, task.Id, filter)
|
|
}
|
|
|
|
func (t *tasksAPI) FindRunsWithID(ctx context.Context, taskID string, filter *RunFilter) ([]domain.Run, error) {
|
|
params := &domain.GetTasksIDRunsAllParams{TaskID: taskID}
|
|
if filter != nil {
|
|
if !filter.AfterTime.IsZero() {
|
|
params.AfterTime = &filter.AfterTime
|
|
}
|
|
if !filter.BeforeTime.IsZero() {
|
|
params.BeforeTime = &filter.BeforeTime
|
|
}
|
|
if filter.Limit > 0 {
|
|
params.Limit = &filter.Limit
|
|
}
|
|
if filter.After != "" {
|
|
params.After = &filter.After
|
|
}
|
|
}
|
|
response, err := t.apiClient.GetTasksIDRuns(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return *response.Runs, nil
|
|
}
|
|
|
|
func (t *tasksAPI) GetRun(ctx context.Context, run *domain.Run) (*domain.Run, error) {
|
|
return t.GetRunByID(ctx, *run.TaskID, *run.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) GetRunByID(ctx context.Context, taskID, runID string) (*domain.Run, error) {
|
|
params := &domain.GetTasksIDRunsIDAllParams{
|
|
TaskID: taskID,
|
|
RunID: runID,
|
|
}
|
|
return t.apiClient.GetTasksIDRunsID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) FindRunLogs(ctx context.Context, run *domain.Run) ([]domain.LogEvent, error) {
|
|
return t.FindRunLogsWithID(ctx, *run.TaskID, *run.Id)
|
|
}
|
|
func (t *tasksAPI) FindRunLogsWithID(ctx context.Context, taskID, runID string) ([]domain.LogEvent, error) {
|
|
params := &domain.GetTasksIDRunsIDLogsAllParams{
|
|
TaskID: taskID,
|
|
RunID: runID,
|
|
}
|
|
response, err := t.apiClient.GetTasksIDRunsIDLogs(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if response.Events == nil {
|
|
return nil, fmt.Errorf("logs for task '%s' run '%s 'not found", taskID, runID)
|
|
}
|
|
return *response.Events, nil
|
|
}
|
|
|
|
func (t *tasksAPI) RunManually(ctx context.Context, task *domain.Task) (*domain.Run, error) {
|
|
return t.RunManuallyWithID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) RunManuallyWithID(ctx context.Context, taskID string) (*domain.Run, error) {
|
|
params := &domain.PostTasksIDRunsAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
return t.apiClient.PostTasksIDRuns(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) RetryRun(ctx context.Context, run *domain.Run) (*domain.Run, error) {
|
|
return t.RetryRunWithID(ctx, *run.TaskID, *run.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) RetryRunWithID(ctx context.Context, taskID, runID string) (*domain.Run, error) {
|
|
params := &domain.PostTasksIDRunsIDRetryAllParams{
|
|
TaskID: taskID,
|
|
RunID: runID,
|
|
}
|
|
return t.apiClient.PostTasksIDRunsIDRetry(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) CancelRun(ctx context.Context, run *domain.Run) error {
|
|
return t.CancelRunWithID(ctx, *run.TaskID, *run.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) CancelRunWithID(ctx context.Context, taskID, runID string) error {
|
|
params := &domain.DeleteTasksIDRunsIDAllParams{
|
|
TaskID: taskID,
|
|
RunID: runID,
|
|
}
|
|
return t.apiClient.DeleteTasksIDRunsID(ctx, params)
|
|
}
|
|
|
|
func (t *tasksAPI) FindLogs(ctx context.Context, task *domain.Task) ([]domain.LogEvent, error) {
|
|
return t.FindLogsWithID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) FindLogsWithID(ctx context.Context, taskID string) ([]domain.LogEvent, error) {
|
|
params := &domain.GetTasksIDLogsAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
response, err := t.apiClient.GetTasksIDLogs(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if response.Events == nil {
|
|
return nil, fmt.Errorf("logs for task '%s' not found", taskID)
|
|
}
|
|
return *response.Events, nil
|
|
}
|
|
|
|
func (t *tasksAPI) FindLabels(ctx context.Context, task *domain.Task) ([]domain.Label, error) {
|
|
return t.FindLabelsWithID(ctx, task.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) FindLabelsWithID(ctx context.Context, taskID string) ([]domain.Label, error) {
|
|
params := &domain.GetTasksIDLabelsAllParams{
|
|
TaskID: taskID,
|
|
}
|
|
response, err := t.apiClient.GetTasksIDLabels(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if response.Labels == nil {
|
|
return nil, fmt.Errorf("lables for task '%s' not found", taskID)
|
|
}
|
|
return *response.Labels, nil
|
|
}
|
|
|
|
func (t *tasksAPI) AddLabel(ctx context.Context, task *domain.Task, label *domain.Label) (*domain.Label, error) {
|
|
return t.AddLabelWithID(ctx, task.Id, *label.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) AddLabelWithID(ctx context.Context, taskID, labelID string) (*domain.Label, error) {
|
|
params := &domain.PostTasksIDLabelsAllParams{
|
|
Body: domain.PostTasksIDLabelsJSONRequestBody{LabelID: &labelID},
|
|
TaskID: taskID,
|
|
}
|
|
response, err := t.apiClient.PostTasksIDLabels(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return response.Label, nil
|
|
}
|
|
|
|
func (t *tasksAPI) RemoveLabel(ctx context.Context, task *domain.Task, label *domain.Label) error {
|
|
return t.RemoveLabelWithID(ctx, task.Id, *label.Id)
|
|
}
|
|
|
|
func (t *tasksAPI) RemoveLabelWithID(ctx context.Context, taskID, labelID string) error {
|
|
params := &domain.DeleteTasksIDLabelsIDAllParams{
|
|
TaskID: taskID,
|
|
LabelID: labelID,
|
|
}
|
|
return t.apiClient.DeleteTasksIDLabelsID(ctx, params)
|
|
}
|