You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2022/06/21 01:19:52 UTC

[incubator-devlake] 03/04: feat: multi-conn for tapd and update migrationscripts

This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit c91b8a123b3aefa69493f7c4ec188624942739cc
Author: abeizn <zi...@merico.dev>
AuthorDate: Mon Jun 20 20:20:11 2022 +0800

    feat: multi-conn for tapd and update migrationscripts
---
 plugins/tapd/api/connection.go                         |  9 ++++++---
 plugins/tapd/models/connection.go                      | 18 ++++++++++++++----
 .../migrationscripts/archived/tapd_connection.go       |  4 ++--
 plugins/tapd/tasks/api_client.go                       |  2 +-
 4 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/plugins/tapd/api/connection.go b/plugins/tapd/api/connection.go
index 3cad748e..b7826f50 100644
--- a/plugins/tapd/api/connection.go
+++ b/plugins/tapd/api/connection.go
@@ -78,7 +78,8 @@ POST /plugins/tapd/connections
 {
 	"name": "tapd data connections name",
 	"endpoint": "tapd api endpoint, i.e. https://merico.atlassian.net/rest",
-	"Token": "generated by `echo -n <tapd login email>:<tapd token> | base64`",
+	"username": "username, usually should be email address",
+	"password": "jenkins api access token",
 	"rateLimit": 10800,
 }
 */
@@ -101,7 +102,8 @@ PATCH /plugins/tapd/connections/:connectionId
 {
 	"name": "tapd data connections name",
 	"endpoint": "tapd api endpoint, i.e. https://merico.atlassian.net/rest",
-	"Token": "generated by `echo -n <tapd login email>:<tapd token> | base64`",
+	"username": "username, usually should be email address",
+	"password": "jenkins api access token",
 	"rateLimit": 10800,
 }
 */
@@ -148,7 +150,8 @@ GET /plugins/tapd/connections/:connectionId
 {
 	"name": "tapd data connections name",
 	"endpoint": "tapd api endpoint, i.e. https://merico.atlassian.net/rest",
-	"Token": "generated by `echo -n <tapd login email>:<tapd token> | base64`",
+	"username": "username, usually should be email address",
+	"password": "jenkins api access token",
 	"rateLimit": 10800,
 }
 */
diff --git a/plugins/tapd/models/connection.go b/plugins/tapd/models/connection.go
index 5e49cd2b..50739886 100644
--- a/plugins/tapd/models/connection.go
+++ b/plugins/tapd/models/connection.go
@@ -17,7 +17,12 @@ limitations under the License.
 
 package models
 
-import "github.com/apache/incubator-devlake/plugins/helper"
+import (
+	"encoding/base64"
+	"fmt"
+
+	"github.com/apache/incubator-devlake/plugins/helper"
+)
 
 type TestConnectionRequest struct {
 	Endpoint string `json:"endpoint" validate:"required,url"`
@@ -31,13 +36,18 @@ type WorkspaceResponse struct {
 	Value string
 }
 
-type AccessToken struct {
-	Token string `mapstructure:"token" validate:"required" json:"token"`
+type BasicAuth struct {
+	Username string `mapstructure:"username" validate:"required" json:"username"`
+	Password string `mapstructure:"password" validate:"required" json:"password"`
+}
+
+func (ba BasicAuth) GetEncodedToken() string {
+	return base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%v:%v", ba.Username, ba.Password)))
 }
 
 type TapdConnection struct {
 	helper.RestConnection `mapstructure:",squash"`
-	AccessToken           `mapstructure:",squash"`
+	BasicAuth             `mapstructure:",squash"`
 }
 
 type TapdConnectionDetail struct {
diff --git a/plugins/tapd/models/migrationscripts/archived/tapd_connection.go b/plugins/tapd/models/migrationscripts/archived/tapd_connection.go
index 86f1f7fb..df2b0f34 100644
--- a/plugins/tapd/models/migrationscripts/archived/tapd_connection.go
+++ b/plugins/tapd/models/migrationscripts/archived/tapd_connection.go
@@ -32,7 +32,7 @@ type AccessToken struct {
 
 type BasicAuth struct {
 	Username string `mapstructure:"username" validate:"required" json:"username"`
-	Password string `mapstructure:"password" validate:"required" json:"password" encrypt:"yes"`
+	Password string `mapstructure:"password" validate:"required" json:"password"`
 }
 
 type RestConnection struct {
@@ -44,7 +44,7 @@ type RestConnection struct {
 
 type TapdConnection struct {
 	RestConnection `mapstructure:",squash"`
-	AccessToken    `mapstructure:",squash"`
+	BasicAuth      `mapstructure:",squash"`
 }
 
 type TapdConnectionDetail struct {
diff --git a/plugins/tapd/tasks/api_client.go b/plugins/tapd/tasks/api_client.go
index 9571a8ce..352b7fe8 100644
--- a/plugins/tapd/tasks/api_client.go
+++ b/plugins/tapd/tasks/api_client.go
@@ -29,8 +29,8 @@ import (
 
 func NewTapdApiClient(taskCtx core.TaskContext, connection *models.TapdConnection) (*helper.ApiAsyncClient, error) {
 
-	auth := base64.StdEncoding.EncodeToString([]byte(connection.Token))
 	// create synchronize api client so we can calculate api rate limit dynamically
+	auth := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%v:%v", connection.Username, connection.Password)))
 	headers := map[string]string{
 		"Authorization": fmt.Sprintf("Basic %v", auth),
 	}