Skip to content
Merged
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
15 changes: 10 additions & 5 deletions cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ func NewCommad() *cobra.Command {

command.AddCommand(NewImportCommand(&clientOpts))
command.AddCommand(NewVersionCommand())
command.AddCommand(NewTestCommand())
command.AddCommand(NewImportURLCommand())
command.AddCommand(NewStartCommand())
command.AddCommand(NewStopCommand())
command.AddCommand(NewContextCommand())
command.AddCommand(NewTestCommand(&clientOpts))
command.AddCommand(NewImportURLCommand(&clientOpts))
command.AddCommand(NewStartCommand(&clientOpts))
command.AddCommand(NewStopCommand(&clientOpts))
command.AddCommand(NewContextCommand(&clientOpts))
command.AddCommand(NewLoginCommand(&clientOpts))
command.AddCommand(NewLogoutCommand(&clientOpts))

Expand All @@ -55,5 +55,10 @@ func NewCommad() *cobra.Command {
command.PersistentFlags().BoolVar(&clientOpts.Verbose, "verbose", false, "Produce dumps of HTTP exchanges")
command.PersistentFlags().BoolVar(&clientOpts.InsecureTLS, "insecure-tls", false, "Whether to accept insecure HTTPS connection")
command.PersistentFlags().StringVar(&clientOpts.CaCertPaths, "caCerts", "", "Comma separated paths of CRT files to add to Root CAs")
command.PersistentFlags().StringVar(&clientOpts.ClientId, "keycloakClientId", "", "Keycloak Realm Service Account ClientId")
command.PersistentFlags().StringVar(&clientOpts.ClientSecret, "keycloakClientSecret", "", "Keycloak Realm Service Account ClientSecret")
command.PersistentFlags().StringVar(&clientOpts.ServerAddr, "microcksURL", "", "Microcks API URL")
command.MarkFlagsRequiredTogether("keycloakClientId", "microcksURL", "keycloakClientSecret")

return command
}
14 changes: 6 additions & 8 deletions cmd/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@ import (
"text/tabwriter"

"github.com/microcks/microcks-cli/pkg/config"
"github.com/microcks/microcks-cli/pkg/connectors"
"github.com/microcks/microcks-cli/pkg/errors"
"github.com/spf13/cobra"
)

func NewContextCommand() *cobra.Command {
func NewContextCommand(globalClientOpts *connectors.ClientOptions) *cobra.Command {
var delete bool
ctxCmd := &cobra.Command{
Use: "context [CONTEXT]",
Expand All @@ -27,24 +28,21 @@ microcks context httP://localhost:8080
# Delete Microcks context
microcks context httP://localhost:8080 --delete`,
Run: func(cmd *cobra.Command, args []string) {
var cfgFile string
configPath, err := config.DefaultLocalConfigPath()
errors.CheckError(err)
cfgFile = configPath
localCfg, err := config.ReadLocalConfig(cfgFile)
configPath := globalClientOpts.ConfigPath
localCfg, err := config.ReadLocalConfig(configPath)
errors.CheckError(err)
if delete {
if len(args) == 0 {
cmd.HelpFunc()(cmd, args)
os.Exit(1)
}
err := deleteContext(args[0], cfgFile)
err := deleteContext(args[0], configPath)
errors.CheckError(err)
return
}

if len(args) == 0 {
printMicrocksContexts(cfgFile)
printMicrocksContexts(configPath)
return
}

Expand Down
65 changes: 47 additions & 18 deletions cmd/import.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,31 +48,60 @@ func NewImportCommand(globalClientOpts *connectors.ClientOptions) *cobra.Command
config.CaCertPaths = globalClientOpts.CaCertPaths
config.Verbose = globalClientOpts.Verbose

localConfig, err := config.ReadLocalConfig(globalClientOpts.ConfigPath)
if err != nil {
fmt.Println(err)
return
}
var mc connectors.MicrocksClient

if localConfig == nil {
fmt.Println("Please login to perform opertion...")
return
}
if globalClientOpts.ServerAddr != "" && globalClientOpts.ClientId != "" && globalClientOpts.ClientSecret != "" {
// create client with server address
mc = connectors.NewMicrocksClient(globalClientOpts.ServerAddr)

if globalClientOpts.Context == "" {
globalClientOpts.Context = localConfig.CurrentContext
}
keycloakURL, err := mc.GetKeycloakURL()
if err != nil {
fmt.Printf("Got error when invoking Microcks client retrieving config: %s", err)
os.Exit(1)
}

mc, err := connectors.NewClient(*globalClientOpts)
if err != nil {
fmt.Printf("error %v", err)
return
}
var oauthToken string = "unauthentifed-token"
if keycloakURL != "null" {
// If Keycloak is enabled, retrieve an OAuth token using Keycloak Client.
kc := connectors.NewKeycloakClient(keycloakURL, globalClientOpts.ClientId, globalClientOpts.ClientSecret)

oauthToken, err = kc.ConnectAndGetToken()
if err != nil {
fmt.Printf("Got error when invoking Keycloack client: %s", err)
os.Exit(1)
}
//fmt.Printf("Retrieve OAuthToken: %s", oauthToken)
}

//Set Auth token
mc.SetOAuthToken(oauthToken)
} else {

localConfig, err := config.ReadLocalConfig(globalClientOpts.ConfigPath)
if err != nil {
fmt.Println(err)
return
}

if localConfig == nil {
fmt.Println("Please login to perform opertion...")
return
}

if globalClientOpts.Context == "" {
globalClientOpts.Context = localConfig.CurrentContext
}

mc, err = connectors.NewClient(*globalClientOpts)
if err != nil {
fmt.Printf("error %v", err)
return
}
}
sepSpecificationFiles := strings.Split(specificationFiles, ",")
for _, f := range sepSpecificationFiles {
mainArtifact := true

var err error
// Check if mainArtifact flag is provided.
if strings.Contains(f, ":") {
pathAndMainArtifact := strings.Split(f, ":")
Expand Down
94 changes: 47 additions & 47 deletions cmd/importURL.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,7 @@ import (
"github.com/spf13/cobra"
)

func NewImportURLCommand() *cobra.Command {
var (
microcksURL string
keycloakClientID string
keycloakClientSecret string
insecureTLS bool
caCertPaths string
verbose bool
)
func NewImportURLCommand(globalClientOpts *connectors.ClientOptions) *cobra.Command {
var importURLCmd = &cobra.Command{
Use: "import-url",
Short: "import API artifacts from URL on Microcks server",
Expand All @@ -49,41 +41,60 @@ func NewImportURLCommand() *cobra.Command {

specificationFiles := args[0]

// Collect optional HTTPS transport flags.
if insecureTLS {
config.InsecureTLS = true
}
if len(caCertPaths) > 0 {
config.CaCertPaths = caCertPaths
}
if verbose {
config.Verbose = true
}
config.InsecureTLS = globalClientOpts.InsecureTLS
config.CaCertPaths = globalClientOpts.CaCertPaths
config.Verbose = globalClientOpts.Verbose

// Now we seems to be good ...
// First - retrieve the Keycloak URL from Microcks configuration.
mc := connectors.NewMicrocksClient(microcksURL)
keycloakURL, err := mc.GetKeycloakURL()
if err != nil {
fmt.Printf("Got error when invoking Microcks client retrieving config: %s", err)
os.Exit(1)
}
var mc connectors.MicrocksClient

var oauthToken string = "unauthentifed-token"
if keycloakURL != "null" {
// If Keycloak is enabled, retrieve an OAuth token using Keycloak Client.
kc := connectors.NewKeycloakClient(keycloakURL, keycloakClientID, keycloakClientSecret)
if globalClientOpts.ServerAddr != "" && globalClientOpts.ClientId != "" && globalClientOpts.ClientSecret != "" {
// create client with server address
mc = connectors.NewMicrocksClient(globalClientOpts.ServerAddr)

oauthToken, err = kc.ConnectAndGetToken()
keycloakURL, err := mc.GetKeycloakURL()
if err != nil {
fmt.Printf("Got error when invoking Keycloack client: %s", err)
fmt.Printf("Got error when invoking Microcks client retrieving config: %s", err)
os.Exit(1)
}
}

// Then - for each specificationFile, upload the artifact on Microcks Server.
mc.SetOAuthToken(oauthToken)
var oauthToken string = "unauthentifed-token"
if keycloakURL != "null" {
// If Keycloak is enabled, retrieve an OAuth token using Keycloak Client.
kc := connectors.NewKeycloakClient(keycloakURL, globalClientOpts.ClientId, globalClientOpts.ClientSecret)

oauthToken, err = kc.ConnectAndGetToken()
if err != nil {
fmt.Printf("Got error when invoking Keycloack client: %s", err)
os.Exit(1)
}
//fmt.Printf("Retrieve OAuthToken: %s", oauthToken)
}

//Set Auth token
mc.SetOAuthToken(oauthToken)
} else {

localConfig, err := config.ReadLocalConfig(globalClientOpts.ConfigPath)
if err != nil {
fmt.Println(err)
return
}

if localConfig == nil {
fmt.Println("Please login to perform opertion...")
return
}

if globalClientOpts.Context == "" {
globalClientOpts.Context = localConfig.CurrentContext
}

mc, err = connectors.NewClient(*globalClientOpts)
if err != nil {
fmt.Printf("error %v", err)
return
}
}
sepSpecificationFiles := strings.Split(specificationFiles, ",")
for _, f := range sepSpecificationFiles {
mainArtifact := true
Expand Down Expand Up @@ -116,17 +127,6 @@ func NewImportURLCommand() *cobra.Command {
}
},
}
importURLCmd.Flags().StringVar(&microcksURL, "microcksURL", "", "Microcks API URL")
importURLCmd.Flags().StringVar(&keycloakClientID, "keycloakClientId", "", "Keycloak Realm Service Account ClientId")
importURLCmd.Flags().StringVar(&keycloakClientSecret, "keycloakClientSecret", "", "Keycloak Realm Service Account ClientSecret")
importURLCmd.Flags().BoolVar(&insecureTLS, "insecure", false, "Whether to accept insecure HTTPS connection")
importURLCmd.Flags().StringVar(&caCertPaths, "caCerts", "", "Comma separated paths of CRT files to add to Root CAs")
importURLCmd.Flags().BoolVar(&verbose, "verbose", false, "Produce dumps of HTTP exchanges")

//Marking flags 'required'
importURLCmd.MarkFlagRequired("microcksURL")
importURLCmd.MarkFlagRequired("keycloakClientId")
importURLCmd.MarkFlagRequired("keycloakClientSecret")

return importURLCmd
}
5 changes: 2 additions & 3 deletions cmd/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/spf13/cobra"
)

func NewStartCommand() *cobra.Command {
func NewStartCommand(globalClientOpts *connectors.ClientOptions) *cobra.Command {
var (
name string
hostPort string
Expand All @@ -34,8 +34,7 @@ microcks start --driver [driver you wnat either 'docker' or 'podman']
microcks start --name [name of you container/instance]`,
Run: func(cmd *cobra.Command, args []string) {

configFile, err := config.DefaultLocalConfigPath()
errors.CheckError(err)
configFile := globalClientOpts.ConfigPath
localConfig, err := config.ReadLocalConfig(configFile)
errors.CheckError(err)

Expand Down
5 changes: 2 additions & 3 deletions cmd/stop.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,15 @@ import (
"github.com/spf13/cobra"
)

func NewStopCommand() *cobra.Command {
func NewStopCommand(globalClientOpts *connectors.ClientOptions) *cobra.Command {

var stopCmd = &cobra.Command{
Use: "stop",
Short: "stop microcks instance",
Long: "stop microcks instance",
Run: func(cmd *cobra.Command, args []string) {

configFile, err := config.DefaultLocalConfigPath()
errors.CheckError(err)
configFile := globalClientOpts.ConfigPath
localConfig, err := config.ReadLocalConfig(configFile)
errors.CheckError(err)

Expand Down
Loading
Loading