Skip to content

Commit

Permalink
Added no auth run
Browse files Browse the repository at this point in the history
  • Loading branch information
catttam committed Sep 5, 2024
1 parent 43d1410 commit 468b7a4
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 23 deletions.
15 changes: 13 additions & 2 deletions cmd/service_run.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ func serviceRunFunc(cmd *cobra.Command, args []string) error {
return err
}

// Check if the cluster has auth
endpoint, _ := cmd.Flags().GetString("endpoint")
token, _ := cmd.Flags().GetString("token")

if endpoint != "" && token == "" {
// Error missing token
}
if token != "" && endpoint == "" {
// Error missing endpoint
}
// Parse input (only --input or --text-input are allowed) (AND one of them is required)
inputFile, _ := cmd.Flags().GetString("input")
textInput, _ := cmd.Flags().GetString("text-input")
Expand Down Expand Up @@ -79,9 +89,8 @@ func serviceRunFunc(cmd *cobra.Command, args []string) error {
}
writer.Close()
}()

// Make the request
resBody, err := service.RunService(conf.Oscar[cluster], args[0], reader)
resBody, err := service.RunService(conf.Oscar[cluster], args[0], token, endpoint, reader)
if err != nil {
return err
}
Expand Down Expand Up @@ -157,6 +166,8 @@ func makeServiceRunCmd() *cobra.Command {
}

serviceRunCmd.Flags().StringP("cluster", "c", "", "set the cluster")
serviceRunCmd.Flags().StringP("endpoint", "e", "", "endpoint of a non registered cluster")
serviceRunCmd.Flags().StringP("token", "t", "", "token of the service")
serviceRunCmd.Flags().StringP("input", "i", "", "input file for the request")
serviceRunCmd.Flags().StringP("text-input", "t", "", "text input string for the request")
serviceRunCmd.Flags().StringP("output", "o", "", "file path to store the output")
Expand Down
56 changes: 35 additions & 21 deletions pkg/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,43 +221,57 @@ func ApplyService(svc *types.Service, c *cluster.Cluster, method string) error {
}

// RunService invokes a service synchronously (a Serverless backend in the cluster is required)
func RunService(c *cluster.Cluster, name string, input io.Reader) (responseBody io.ReadCloser, err error) {
func RunService(c *cluster.Cluster, name string, token string, endpoint string, input io.Reader) (responseBody io.ReadCloser, err error) {

runServiceURL, err := url.Parse(c.Endpoint)
if err != nil {
return nil, cluster.ErrParsingEndpoint
var runServiceURL *url.URL
if token != "" {
runServiceURL, err = url.Parse(endpoint)
} else {
runServiceURL, err = url.Parse(c.Endpoint)
}
runServiceURL.Path = path.Join(runServiceURL.Path, runPath, name)

// Get the service
svc, err := GetService(c, name)
if err != nil {
return nil, err
return nil, cluster.ErrParsingEndpoint
}

runServiceURL.Path = path.Join(runServiceURL.Path, runPath, name)
// Make the request
req, err := http.NewRequest(http.MethodPost, runServiceURL.String(), input)
if err != nil {
return nil, cluster.ErrMakingRequest
}

// Add service's token if defined (OSCAR >= v2.2.0)
if svc.Token != "" {
bearer := "Bearer " + strings.TrimSpace(svc.Token)
var res *http.Response
if token != "" {
bearer := "Bearer " + strings.TrimSpace(token)
req.Header.Add("Authorization", bearer)
}

// Update cluster client timeout
client := c.GetClient()
client.Timeout = time.Second * 300
client := &http.Client{}
res, err = client.Do(req)
} else {

// Update client transport to remove basic auth
client.Transport = &http.Transport{
// Enable/disable ssl verification
TLSClientConfig: &tls.Config{InsecureSkipVerify: !c.SSLVerify},
// Get the service
svc, err := GetService(c, name)
if err != nil {
return nil, err
}
// Add service's token if defined (OSCAR >= v2.2.0)
if svc.Token != "" {
bearer := "Bearer " + strings.TrimSpace(svc.Token)
req.Header.Add("Authorization", bearer)
}
// Update cluster client timeout
client := c.GetClient()
client.Timeout = time.Second * 300

// Update client transport to remove basic auth
client.Transport = &http.Transport{
// Enable/disable ssl verification
TLSClientConfig: &tls.Config{InsecureSkipVerify: !c.SSLVerify},
}

res, err = client.Do(req)
}

res, err := client.Do(req)
if err != nil {
return nil, cluster.ErrSendingRequest
}
Expand Down

0 comments on commit 468b7a4

Please sign in to comment.