瀏覽代碼

Use cli context for login

Guillaume Tardif 5 年之前
父節點
當前提交
d49773e348
共有 2 個文件被更改,包括 5 次插入10 次删除
  1. 1 1
      azure/backend.go
  2. 4 9
      azure/login/login.go

+ 1 - 1
azure/backend.go

@@ -274,5 +274,5 @@ type aciCloudService struct {
 }
 }
 
 
 func (cs *aciCloudService) Login(ctx context.Context, params map[string]string) error {
 func (cs *aciCloudService) Login(ctx context.Context, params map[string]string) error {
-	return cs.loginService.Login()
+	return cs.loginService.Login(ctx)
 }
 }

+ 4 - 9
azure/login/login.go

@@ -1,6 +1,7 @@
 package login
 package login
 
 
 import (
 import (
+	"context"
 	"encoding/json"
 	"encoding/json"
 	"fmt"
 	"fmt"
 	"io/ioutil"
 	"io/ioutil"
@@ -9,14 +10,11 @@ import (
 	"net/http"
 	"net/http"
 	"net/http/httputil"
 	"net/http/httputil"
 	"net/url"
 	"net/url"
-	"os"
 	"os/exec"
 	"os/exec"
-	"os/signal"
 	"path/filepath"
 	"path/filepath"
 	"runtime"
 	"runtime"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
-	"syscall"
 	"time"
 	"time"
 
 
 	"github.com/docker/api/errdefs"
 	"github.com/docker/api/errdefs"
@@ -91,16 +89,13 @@ func newAzureLoginServiceFromPath(tokenStorePath string, helper apiHelper) Azure
 }
 }
 
 
 type apiHelper interface {
 type apiHelper interface {
-	queryToken(data url.Values, tenantID string) (token azureToken, err error)
+	queryToken(data url.Values, tenantID string) (azureToken, error)
 }
 }
 
 
 type azureAPIHelper struct{}
 type azureAPIHelper struct{}
 
 
 //Login perform azure login through browser
 //Login perform azure login through browser
-func (login AzureLoginService) Login() error {
-	sigs := make(chan os.Signal, 1)
-	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
-
+func (login AzureLoginService) Login(ctx context.Context) error {
 	queryCh := make(chan url.Values, 1)
 	queryCh := make(chan url.Values, 1)
 	mux := http.NewServeMux()
 	mux := http.NewServeMux()
 	mux.HandleFunc("/", queryHandler(queryCh))
 	mux.HandleFunc("/", queryHandler(queryCh))
@@ -118,7 +113,7 @@ func (login AzureLoginService) Login() error {
 	openbrowser(authURL)
 	openbrowser(authURL)
 
 
 	select {
 	select {
-	case <-sigs:
+	case <-ctx.Done():
 		return nil
 		return nil
 	case qsValues := <-queryCh:
 	case qsValues := <-queryCh:
 		errorMsg, hasError := qsValues["error"]
 		errorMsg, hasError := qsValues["error"]