Skip to content

Commit

Permalink
Merge pull request vmware-tanzu#8 from ngtuna/delete-repo
Browse files Browse the repository at this point in the history
add repo deletion
  • Loading branch information
prydonius authored Feb 8, 2018
2 parents 2728028 + 0d19542 commit 5324405
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 89 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:

- run: go build -v
- run: go test -v -race ./...

- run: docker build -t kubeapps/chartsvc:latest .

- deploy:
Expand Down
50 changes: 31 additions & 19 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 0 additions & 23 deletions Gopkg.toml
Original file line number Diff line number Diff line change
@@ -1,26 +1,3 @@

# Gopkg.toml example
#
# Refer to /~https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
# name = "github.com/user/project"
# version = "1.0.0"
#
# [[constraint]]
# name = "github.com/user/project2"
# branch = "dev"
# source = "github.com/myfork/project2"
#
# [[override]]
# name = "github.com/x/y"
# version = "2.4.0"


[[constraint]]
branch = "master"
name = "github.com/kubeapps/common"
Expand Down
6 changes: 3 additions & 3 deletions cmd/chart-repo/Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 0 additions & 23 deletions cmd/chart-repo/Gopkg.toml
Original file line number Diff line number Diff line change
@@ -1,26 +1,3 @@

# Gopkg.toml example
#
# Refer to /~https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
# name = "github.com/user/project"
# version = "1.0.0"
#
# [[constraint]]
# name = "github.com/user/project2"
# branch = "dev"
# source = "github.com/myfork/project2"
#
# [[override]]
# name = "github.com/x/y"
# version = "2.4.0"


[[constraint]]
name = "github.com/sirupsen/logrus"
version = "1.0.4"
Expand Down
41 changes: 39 additions & 2 deletions cmd/chart-repo/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,51 @@ limitations under the License.
package main

import (
"os"

"github.com/spf13/cobra"
"github.com/sirupsen/logrus"
"github.com/kubeapps/common/datastore"
)

var deleteCmd = &cobra.Command{
Use: "delete [REPO NAME]",
Short: "delete a chart repository",
Run: func(cmd *cobra.Command, args []string) {
cmd.Help()
return
if len(args) != 1 {
logrus.Info("Need exactly one argument: [REPO NAME]")
cmd.Help()
return
}
mongoURL, err := cmd.Flags().GetString("mongo-url")
if err != nil {
logrus.Fatal(err)
}
mongoDB, err := cmd.Flags().GetString("mongo-database")
if err != nil {
logrus.Fatal(err)
}
mongoUser, err := cmd.Flags().GetString("mongo-user")
if err != nil {
logrus.Fatal(err)
}
mongoPW := os.Getenv("MONGO_PASSWORD")
debug, err := cmd.Flags().GetBool("debug")
if err != nil {
logrus.Fatal(err)
}
if debug {
logrus.SetLevel(logrus.DebugLevel)
}
mongoConfig := datastore.Config{URL: mongoURL, Database: mongoDB, Username: mongoUser, Password: mongoPW}
dbSession, err := datastore.NewSession(mongoConfig)
if err != nil {
logrus.Fatalf("Can't connect to mongoDB: %v", err)
}
if err = deleteRepo(dbSession, args[0]); err != nil {
logrus.Fatalf("Can't delete chart repository %s from database: %v", args[0], err)
}

logrus.Infof("Successfully deleted the chart repository %s from database", args[0])
},
}
24 changes: 6 additions & 18 deletions cmd/chart-repo/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,12 +132,13 @@ func syncRepo(dbSession datastore.Session, repoName, repoURL string) error {
}

func deleteRepo(dbSession datastore.Session, repoName string) error {
err := removeCharts(dbSession, repoName)
if err != nil {
return err
}
db, closer := dbSession.DB()
defer closer()
_, err := db.C(chartCollection).RemoveAll(bson.M{
"repo.name": repoName,
})

return nil
return err
}

func fetchRepoIndex(repoURL *url.URL) (*helmrepo.IndexFile, error) {
Expand Down Expand Up @@ -230,19 +231,6 @@ func importCharts(dbSession datastore.Session, charts []chart) error {
return err
}

func removeCharts(dbSession datastore.Session, repoName string) error {
db, closer := dbSession.DB()
defer closer()
bulk := db.C(chartCollection).Bulk()

bulk.RemoveAll(bson.M{
"repo.name": repoName,
})

_, err := bulk.Run()
return err
}

func importWorker(dbSession datastore.Session, wg *sync.WaitGroup, icons <-chan chart, chartFiles <-chan importChartFilesJob) {
defer wg.Done()
for c := range icons {
Expand Down
13 changes: 13 additions & 0 deletions cmd/chart-repo/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,19 @@ func Test_importCharts(t *testing.T) {
}
}

func Test_DeleteRepo(t *testing.T) {
m := &mock.Mock{}
m.On("RemoveAll", bson.M{
"repo.name": "test",
})
dbSession := mockstore.NewMockSession(m)

err := deleteRepo(dbSession, "test")
if err != nil {
t.Errorf("failed to delete chart repo test: %v", err)
}
}

func Test_fetchAndImportIcon(t *testing.T) {
t.Run("no icon", func(t *testing.T) {
m := mock.Mock{}
Expand Down

0 comments on commit 5324405

Please sign in to comment.