Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion cmd/harbor/root/replication/executions/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ func ListCommand() *cobra.Command {
return fmt.Errorf("invalid replication policy ID: %s, %v", args[0], err)
}
} else {
rpolicyID = prompt.GetReplicationPolicyFromUser()
var err error
rpolicyID, err = prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
}

log.Debug("Fetching executions...")
Expand Down
10 changes: 8 additions & 2 deletions cmd/harbor/root/replication/executions/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,14 @@ func ViewCommand() *cobra.Command {
return fmt.Errorf("invalid replication execution ID: %s, %v", args[0], err)
}
} else {
rpolicyID := prompt.GetReplicationPolicyFromUser()
execID = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
rpolicyID, err := prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
execID, err = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
if err != nil {
return fmt.Errorf("failed to get replication execution: %w", err)
}
}

execution, err := api.GetReplicationExecution(execID)
Expand Down
21 changes: 17 additions & 4 deletions cmd/harbor/root/replication/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,24 @@ func LogsCommand() *cobra.Command {
Args: cobra.MaximumNArgs(0),
RunE: func(cmd *cobra.Command, args []string) error {
if execID != 0 && taskID == 0 {
taskID = prompt.GetReplicationTaskIDFromUser(execID)
var err error
taskID, err = prompt.GetReplicationTaskIDFromUser(execID)
if err != nil {
return fmt.Errorf("failed to get replication task: %w", err)
}
} else if execID == 0 && taskID == 0 {
rpolicyID := prompt.GetReplicationPolicyFromUser()
execID = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
taskID = prompt.GetReplicationTaskIDFromUser(execID)
rpolicyID, err := prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
execID, err = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
if err != nil {
return fmt.Errorf("failed to get replication execution: %w", err)
}
taskID, err = prompt.GetReplicationTaskIDFromUser(execID)
if err != nil {
return fmt.Errorf("failed to get replication task: %w", err)
}
} else if execID == 0 && taskID != 0 {
return fmt.Errorf("execution ID must be provided if task ID is specified")
}
Expand Down
6 changes: 5 additions & 1 deletion cmd/harbor/root/replication/policies/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ func DeleteCommand() *cobra.Command {
return fmt.Errorf("invalid replication policy ID: %s, %v", args[0], err)
}
} else {
rpolicyID = prompt.GetReplicationPolicyFromUser()
var err error
rpolicyID, err = prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
}

_, err := api.DeleteReplicationPolicy(rpolicyID)
Expand Down
6 changes: 5 additions & 1 deletion cmd/harbor/root/replication/policies/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,11 @@ func UpdateCommand() *cobra.Command {
return fmt.Errorf("invalid replication policy ID: %s, %v", args[0], err)
}
} else {
policyID = prompt.GetReplicationPolicyFromUser()
var err error
policyID, err = prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
}

existingPolicy, err := api.GetReplicationPolicy(policyID)
Expand Down
6 changes: 5 additions & 1 deletion cmd/harbor/root/replication/policies/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ func ViewCommand() *cobra.Command {
return fmt.Errorf("invalid replication policy ID: %s, %v", args[0], err)
}
} else {
rpolicyID = prompt.GetReplicationPolicyFromUser()
var err error
rpolicyID, err = prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
}

response, err := api.GetReplicationPolicy(rpolicyID)
Expand Down
6 changes: 5 additions & 1 deletion cmd/harbor/root/replication/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ func StartCommand() *cobra.Command {
return fmt.Errorf("invalid replication policy ID: %s, %v", args[0], err)
}
} else {
rpolicyID = prompt.GetReplicationPolicyFromUser()
var err error
rpolicyID, err = prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
}
response, err := api.StartReplication(rpolicyID)
if err != nil {
Expand Down
16 changes: 13 additions & 3 deletions cmd/harbor/root/replication/stop.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,20 @@ func StopCommand() *cobra.Command {
if err != nil {
return fmt.Errorf("invalid replication policy ID: %s, %v", args[0], err)
}
executionID = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
executionID, err = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
if err != nil {
return fmt.Errorf("failed to get replication execution: %w", err)
}
} else {
rpolicyID = prompt.GetReplicationPolicyFromUser()
executionID = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
var err error
rpolicyID, err = prompt.GetReplicationPolicyFromUser()
if err != nil {
return fmt.Errorf("failed to get replication policy: %w", err)
}
executionID, err = prompt.GetReplicationExecutionIDFromUser(rpolicyID)
if err != nil {
return fmt.Errorf("failed to get replication execution: %w", err)
}
}

execution, err := api.GetReplicationExecution(executionID)
Expand Down
49 changes: 38 additions & 11 deletions pkg/prompt/prompt.go
Original file line number Diff line number Diff line change
Expand Up @@ -381,52 +381,79 @@ func GetRobotIDFromUser(projectID int64) (int64, error) {
return id, nil
}

func GetReplicationPolicyFromUser() int64 {
func GetReplicationPolicyFromUser() (int64, error) {
replicationPolicyID := make(chan int64)
errChan := make(chan error, 1)

go func() {
response, err := api.ListReplicationPolicies()
if err != nil {
log.Fatal(err)
errChan <- err
return
}
if len(response.Payload) == 0 {
errChan <- fmt.Errorf("no replication policies found")
return
}
rpolicies.ReplicationPoliciesList(response.Payload, replicationPolicyID)
}()

return <-replicationPolicyID
select {
case id := <-replicationPolicyID:
return id, nil
case err := <-errChan:
return 0, err
}
}

func GetReplicationExecutionIDFromUser(rpolicyID int64) int64 {
func GetReplicationExecutionIDFromUser(rpolicyID int64) (int64, error) {
executionID := make(chan int64)
errChan := make(chan error, 1)

go func() {
response, err := api.ListReplicationExecutions(rpolicyID)
if err != nil {
log.Fatal(err)
errChan <- err
return
}
if len(response.Payload) == 0 {
log.Fatal("no replication executions found")
errChan <- fmt.Errorf("no replication executions found")
return
}
rexecutions.ReplicationExecutionList(response.Payload, executionID)
}()

return <-executionID
select {
case id := <-executionID:
return id, nil
case err := <-errChan:
return 0, err
}
}

func GetReplicationTaskIDFromUser(execID int64) int64 {
func GetReplicationTaskIDFromUser(execID int64) (int64, error) {
executionID := make(chan int64)
errChan := make(chan error, 1)

go func() {
response, err := api.ListReplicationTasks(execID)
if err != nil {
log.Fatal(err)
errChan <- err
return
}
if len(response.Payload) == 0 {
log.Fatal("no replication tasks found")
errChan <- fmt.Errorf("no replication tasks found")
return
}
rtasks.ReplicationTasksList(response.Payload, executionID)
}()

return <-executionID
select {
case id := <-executionID:
return id, nil
case err := <-errChan:
return 0, err
}
}

// Get GetMemberIDFromUser choosing from list of members
Expand Down
Loading