Skip to content

Commit

Permalink
kubectl schemahero install comand:
Browse files Browse the repository at this point in the history
  • Loading branch information
marccampbell committed Jan 14, 2020
1 parent cc0348f commit 7a89661
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 4 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ require (
gopkg.in/src-d/go-git.v4 v4.13.1
gopkg.in/yaml.v2 v2.2.4
k8s.io/api v0.17.0
k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783
k8s.io/apimachinery v0.17.0
k8s.io/cli-runtime v0.17.0
k8s.io/client-go v0.17.0
Expand Down
8 changes: 4 additions & 4 deletions pkg/cli/schemaherokubectlcli/get_migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ import (

func GetMigrationsCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "migrations",
Short: "",
Long: `...`,
SilenceErrors: true,,
Use: "migrations",
Short: "",
Long: `...`,
SilenceErrors: true,
PreRun: func(cmd *cobra.Command, args []string) {
viper.BindPFlags(cmd.Flags())
},
Expand Down
28 changes: 28 additions & 0 deletions pkg/cli/schemaherokubectlcli/install.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package schemaherokubectlcli

import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/schemahero/schemahero/pkg/installer"
)

func InstallCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "install",
Short: "install the schemahero operator to the cluster",
Long: `...`,
SilenceErrors: true,
PreRun: func(cmd *cobra.Command, args []string) {
viper.BindPFlags(cmd.Flags())
},
RunE: func(cmd *cobra.Command, args []string) error {
if err := installer.InstallOperator(); err != nil {
return err
}

return nil
},
}

return cmd
}
1 change: 1 addition & 0 deletions pkg/cli/schemaherokubectlcli/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ func RootCmd() *cobra.Command {
cobra.OnInitialize(initConfig)

cmd.AddCommand(Version())
cmd.AddCommand(InstallCmd())
cmd.AddCommand(GetCmd())
cmd.AddCommand(DescribeCmd())
cmd.AddCommand(UpdateCmd())
Expand Down
54 changes: 54 additions & 0 deletions pkg/installer/installer.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package installer

import (
"github.com/pkg/errors"
extensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
extensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"sigs.k8s.io/controller-runtime/pkg/client/config"
)

func InstallOperator() error {
cfg, err := config.GetConfig()
if err != nil {
return errors.Wrap(err, "failed to get kubernetes config")
}

client, err := kubernetes.NewForConfig(cfg)
if err != nil {
return errors.Wrap(err, "failed to create new kubernetes client")
}

extensionsClient, err := extensionsclient.NewForConfig(cfg)
if err != nil {
return errors.Wrap(err, "faield to create extensions client")
}

if err := createDatabasesCRD(client, extensionsClient); err != nil {
return errors.Wrap(err, "failed to create databases crd")
}

return nil
}

func createDatabasesCRD(client *kubernetes.Clientset, extensionsClient *extensionsclient.ApiextensionsV1Client) error {
databasesCRD := extensionsv1.CustomResourceDefinition{
TypeMeta: metav1.TypeMeta{
APIVersion: "apiextensions.k8s.io/v1beta1",
Kind: "CustomResourceDefinition",
},
ObjectMeta: metav1.ObjectMeta{
Name: "databases.databases.schemahero.io",
},
Spec: extensionsv1.CustomResourceDefinitionSpec{
Group: "databases.schemahero.io",
},
}

if _, err := extensionsClient.CustomResourceDefinitions().Create(&databasesCRD); err != nil {
return errors.Wrap(err, "failed to create databases crd")
}

return nil
}

0 comments on commit 7a89661

Please sign in to comment.