Skip to content

Commit

Permalink
feat:(addon) create addon for Ambassador
Browse files Browse the repository at this point in the history
fixes #640
  • Loading branch information
jstrachan committed Apr 16, 2018
1 parent ed2a009 commit 2152d90
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 0 deletions.
1 change: 1 addition & 0 deletions pkg/jx/cmd/create_addon.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ func NewCmdCreateAddon(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobr
},
}

cmd.AddCommand(NewCmdCreateAddonAmbassador(f, out, errOut))
cmd.AddCommand(NewCmdCreateAddonAnchore(f, out, errOut))
cmd.AddCommand(NewCmdCreateAddonCDX(f, out, errOut))
cmd.AddCommand(NewCmdCreateAddonGitea(f, out, errOut))
Expand Down
96 changes: 96 additions & 0 deletions pkg/jx/cmd/create_addon_ambassador.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package cmd

import (
"github.com/spf13/cobra"
"io"

"github.com/jenkins-x/jx/pkg/jx/cmd/templates"
cmdutil "github.com/jenkins-x/jx/pkg/jx/cmd/util"
"github.com/jenkins-x/jx/pkg/kube"
"github.com/jenkins-x/jx/pkg/util"
)

const (
defaultAmbassadorReleaseName = "ambassador"
ambassadorRepoName = "datawire"
ambassadorRepoUrl = "https://www.getambassador.io"
)

var (
createAddonAmbassadorLong = templates.LongDesc(`
Creates the ambassador addon for smart load balancing on kubernetes
`)

createAddonAmbassadorExample = templates.Examples(`
# Create the ambassador addon
jx create addon ambassador
# Create the ambassador addon in a custom namespace
jx create addon ambassador -n mynamespace
`)
)

// CreateAddonAmbassadorOptions the options for the create spring command
type CreateAddonAmbassadorOptions struct {
CreateAddonOptions

Chart string
}

// NewCmdCreateAddonAmbassador creates a command object for the "create" command
func NewCmdCreateAddonAmbassador(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Command {
options := &CreateAddonAmbassadorOptions{
CreateAddonOptions: CreateAddonOptions{
CreateOptions: CreateOptions{
CommonOptions: CommonOptions{
Factory: f,
Out: out,
Err: errOut,
},
},
},
}

cmd := &cobra.Command{
Use: "ambassador",
Short: "Create an ambassador addon",
Aliases: []string{"env"},
Long: createAddonAmbassadorLong,
Example: createAddonAmbassadorExample,
Run: func(cmd *cobra.Command, args []string) {
options.Cmd = cmd
options.Args = args
err := options.Run()
cmdutil.CheckErr(err)
},
}

options.addCommonFlags(cmd)
options.addFlags(cmd, "", defaultAmbassadorReleaseName)

cmd.Flags().StringVarP(&options.Version, "version", "v", "", "The version of the ambassador addon to use")
cmd.Flags().StringVarP(&options.Chart, optionChart, "c", kube.ChartAmbassador, "The name of the chart to use")
return cmd
}

// Run implements the command
func (o *CreateAddonAmbassadorOptions) Run() error {
if o.ReleaseName == "" {
return util.MissingOption(optionRelease)
}
if o.Chart == "" {
return util.MissingOption(optionChart)
}
err := o.addHelmRepoIfMissing(ambassadorRepoUrl, ambassadorRepoName)
if err != nil {
return err
}

//values := []string{"rbac.create=true"}
values := []string{""}
err = o.installChart(o.ReleaseName, o.Chart, o.Version, o.Namespace, true, values)
if err != nil {
return err
}
return nil
}
4 changes: 4 additions & 0 deletions pkg/kube/constants.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package kube

const (
// ChartAmbassador the default chart for ambassador
ChartAmbassador = "datawire/ambassador"

// ChartAnchore the default chart for the Anchore plugin
ChartAnchore = "stable/anchore-engine"

Expand Down Expand Up @@ -96,6 +99,7 @@ const (

var (
AddonCharts = map[string]string{
"ambassador": ChartAmbassador,
"anchore": ChartAnchore,
"cdx": ChartCDX,
"gitea": ChartGitea,
Expand Down

0 comments on commit 2152d90

Please sign in to comment.