Skip to content

Commit

Permalink
Update test
Browse files Browse the repository at this point in the history
  • Loading branch information
glinton committed Dec 13, 2019
2 parents 8a3fe19 + cc3b164 commit 998887b
Show file tree
Hide file tree
Showing 69 changed files with 1,635 additions and 557 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
1. [16175](https://github.com/influxdata/influxdb/pull/16175): Added delete functionality to note cells so that they can be deleted
1. [16204](https://github.com/influxdata/influxdb/pull/16204): Fix failure to create labels when creating telegraf configs
1. [16207](https://github.com/influxdata/influxdb/pull/16207): Fix crash when editing a Telegraf config
1. [16201](https://github.com/influxdata/influxdb/pull/16201): Updated start/endtime functionality so that custom script timeranges overwrite dropdown selections
1. [16217](https://github.com/influxdata/influxdb/pull/16217): Fix 12-hour time format to use consistent formatting and number of time ticks

### UI Improvements

Expand Down
25 changes: 7 additions & 18 deletions cmd/influx/bucket.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,25 +81,14 @@ func bucketCreateF(cmd *cobra.Command, args []string) error {
RetentionPeriod: bucketCreateFlags.retention,
}

if bucketCreateFlags.orgID != "" {
id, err := platform.IDFromString(bucketCreateFlags.orgID)
if err != nil {
return fmt.Errorf("failed to decode org id %q: %v", bucketCreateFlags.orgID, err)
}
b.OrgID = *id
} else if bucketCreateFlags.org != "" {
orgSvc, err := newOrganizationService()
if err != nil {
return fmt.Errorf("failed to initialize organization service client: %v", err)
}

filter := platform.OrganizationFilter{Name: &bucketCreateFlags.org}
org, err := orgSvc.FindOrganization(context.Background(), filter)
if err != nil {
return err
}
orgSvc, err := newOrganizationService()
if err != nil {
return nil
}

b.OrgID = org.ID
b.OrgID, err = getOrgID(orgSvc, bucketCreateFlags.orgID, bucketCreateFlags.org)
if err != nil {
return err
}

if err := s.CreateBucket(context.Background(), b); err != nil {
Expand Down
29 changes: 9 additions & 20 deletions cmd/influx/inspect.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"context"
"errors"
"fmt"
"os"
Expand Down Expand Up @@ -95,25 +94,15 @@ func inspectReportTSMF(cmd *cobra.Command, args []string) error {
return errors.New("org-id must be set for non-empty bucket-id")
}

if inspectReportTSMFlags.orgID != "" {
var err error
report.OrgID, err = influxdb.IDFromString(inspectReportTSMFlags.orgID)
if err != nil {
return fmt.Errorf("invalid org ID provided: %s", err.Error())
}
} else if inspectReportTSMFlags.org != "" {
orgSvc, err := newOrganizationService()
if err != nil {
return fmt.Errorf("failed to initialize organization service client: %v", err)
}

filter := influxdb.OrganizationFilter{Name: &inspectReportTSMFlags.org}
org, err := orgSvc.FindOrganization(context.Background(), filter)
if err != nil {
return fmt.Errorf("%v", err)
}
report.OrgID = &org.ID
orgSvc, err := newOrganizationService()
if err != nil {
return nil
}
id, err := getOrgID(orgSvc, bucketCreateFlags.orgID, bucketCreateFlags.org)
if err != nil {
return nil
}
report.OrgID = &id

if inspectReportTSMFlags.bucketID != "" {
bucketID, err := influxdb.IDFromString(inspectReportTSMFlags.bucketID)
Expand All @@ -123,7 +112,7 @@ func inspectReportTSMF(cmd *cobra.Command, args []string) error {
report.BucketID = bucketID
}

_, err := report.Run(true)
_, err = report.Run(true)
if err != nil {
panic(err)
}
Expand Down
20 changes: 20 additions & 0 deletions cmd/influx/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -242,3 +242,23 @@ func newLocalKVService() (*kv.Service, error) {

return kv.NewService(zap.NewNop(), store), nil
}

func getOrgID(orgSVC influxdb.OrganizationService, id string, name string) (influxdb.ID, error) {
if id != "" {
influxOrgID, err := influxdb.IDFromString(id)
if err != nil {
return 0, fmt.Errorf("invalid org ID provided: %s", err.Error())
}
return *influxOrgID, nil
} else if name != "" {
org, err := orgSVC.FindOrganization(context.Background(), influxdb.OrganizationFilter{
Name: &name,
})
if err != nil {
return 0, fmt.Errorf("%v", err)
}
return org.ID, nil
}

return 0, fmt.Errorf("")
}
106 changes: 66 additions & 40 deletions cmd/influx/pkg.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@ import (
"gopkg.in/yaml.v3"
)

type pkgSVCFn func(cliReq httpClientOpts, opts ...pkger.ServiceSetterFn) (pkger.SVC, error)
type pkgSVCsFn func(cliReq httpClientOpts, opts ...pkger.ServiceSetterFn) (pkger.SVC, influxdb.OrganizationService, error)

func cmdPkg(svcFn pkgSVCFn, opts ...genericCLIOptfn) *cobra.Command {
func cmdPkg(svcFn pkgSVCsFn, opts ...genericCLIOptfn) *cobra.Command {
return newCmdPkgBuilder(svcFn, opts...).cmdPkg()
}

type cmdPkgBuilder struct {
genericCLIOpts

svcFn pkgSVCFn
svcFn pkgSVCsFn

applyReqLimit int
file string
Expand All @@ -60,7 +60,7 @@ type cmdPkgBuilder struct {
}
}

func newCmdPkgBuilder(svcFn pkgSVCFn, opts ...genericCLIOptfn) *cmdPkgBuilder {
func newCmdPkgBuilder(svcFn pkgSVCsFn, opts ...genericCLIOptfn) *cmdPkgBuilder {
opt := genericCLIOpts{
in: os.Stdin,
w: os.Stdout,
Expand Down Expand Up @@ -107,47 +107,38 @@ func (b *cmdPkgBuilder) cmdPkgApply() *cobra.Command {
return cmd
}

func (b *cmdPkgBuilder) validOrgFlags() error {
if b.orgID == "" && b.org == "" {
return fmt.Errorf("must specify org-id, or org name")
} else if b.orgID != "" && b.org != "" {
return fmt.Errorf("must specify org-id, or org name not both")
}
return nil
}

func (b *cmdPkgBuilder) pkgApplyRunEFn() func(*cobra.Command, []string) error {
return func(cmd *cobra.Command, args []string) (e error) {
if b.orgID == "" && b.org == "" {
return fmt.Errorf("must specify org-id, or org name")
} else if b.orgID != "" && b.org != "" {
return fmt.Errorf("must specify org-id, or org name not both")
if err := b.validOrgFlags(); err != nil {
return err
}
color.NoColor = !b.hasColor
var influxOrgID *influxdb.ID

if b.orgID != "" {
var err error
influxOrgID, err = influxdb.IDFromString(b.orgID)
if err != nil {
return fmt.Errorf("invalid org ID provided: %s", err.Error())
}
} else if b.org != "" {
orgSvc, err := newOrganizationService()
if err != nil {
return fmt.Errorf("failed to initialize organization service client: %v", err)
}

filter := influxdb.OrganizationFilter{Name: &b.org}
org, err := orgSvc.FindOrganization(context.Background(), filter)
if err != nil {
return fmt.Errorf("%v", err)
}
influxOrgID = &org.ID
svc, orgSVC, err := b.svcFn(flags.httpClientOpts(), pkger.WithApplyReqLimit(b.applyReqLimit))
if err != nil {
return err
}

svc, err := b.svcFn(flags.httpClientOpts(), pkger.WithApplyReqLimit(b.applyReqLimit))
influxOrgID, err := getOrgID(orgSVC, b.orgID, b.org)
if err != nil {
return err
return nil
}

pkg, isTTY, err := b.readPkgStdInOrFile(b.file)
if err != nil {
return err
}

_, diff, err := svc.DryRun(context.Background(), *influxOrgID, pkg)
_, diff, err := svc.DryRun(context.Background(), influxOrgID, pkg)
if err != nil {
return err
}
Expand All @@ -174,7 +165,7 @@ func (b *cmdPkgBuilder) pkgApplyRunEFn() func(*cobra.Command, []string) error {
return errors.New("package has conflicts with existing resources and cannot safely apply")
}

summary, err := svc.Apply(context.Background(), *influxOrgID, pkg)
summary, err := svc.Apply(context.Background(), influxOrgID, pkg)
if err != nil {
return err
}
Expand Down Expand Up @@ -221,7 +212,7 @@ func (b *cmdPkgBuilder) pkgNewRunEFn() func(*cobra.Command, []string) error {
}
}

pkgSVC, err := b.svcFn(flags.httpClientOpts())
pkgSVC, _, err := b.svcFn(flags.httpClientOpts())
if err != nil {
return err
}
Expand Down Expand Up @@ -253,7 +244,7 @@ func (b *cmdPkgBuilder) cmdPkgExport() *cobra.Command {

func (b *cmdPkgBuilder) pkgExportRunEFn() func(*cobra.Command, []string) error {
return func(cmd *cobra.Command, args []string) error {
pkgSVC, err := b.svcFn(flags.httpClientOpts())
pkgSVC, _, err := b.svcFn(flags.httpClientOpts())
if err != nil {
return err
}
Expand Down Expand Up @@ -308,7 +299,8 @@ func (b *cmdPkgBuilder) cmdPkgExportAll() *cobra.Command {
cmd.Short = "Export all existing resources for an organization as a package"

cmd.Flags().StringVarP(&b.file, "file", "f", "", "output file for created pkg; defaults to std out if no file provided; the extension of provided file (.yml/.json) will dictate encoding")
cmd.Flags().StringVarP(&b.orgID, "org-id", "o", "", "organization id")
cmd.Flags().StringVarP(&b.orgID, "org-id", "", "", "organization id")
cmd.Flags().StringVarP(&b.org, "org", "o", "", "The name of the organization that owns the bucket")
cmd.Flags().StringVarP(&b.meta.Name, "name", "n", "", "name for new pkg")
cmd.Flags().StringVarP(&b.meta.Description, "description", "d", "", "description for new pkg")
cmd.Flags().StringVarP(&b.meta.Version, "version", "v", "", "version for new pkg")
Expand All @@ -320,18 +312,22 @@ func (b *cmdPkgBuilder) cmdPkgExportAll() *cobra.Command {

func (b *cmdPkgBuilder) pkgExportAllRunEFn() func(*cobra.Command, []string) error {
return func(cmd *cobra.Command, args []string) error {
pkgSVC, err := b.svcFn(flags.httpClientOpts())
if err := b.validOrgFlags(); err != nil {
return err
}

pkgSVC, orgSVC, err := b.svcFn(flags.httpClientOpts())
if err != nil {
return err
}

opts := []pkger.CreatePkgSetFn{pkger.CreateWithMetadata(b.meta)}

orgID, err := influxdb.IDFromString(b.orgID)
orgID, err := getOrgID(orgSVC, b.orgID, b.org)
if err != nil {
return err
}
opts = append(opts, pkger.CreateWithAllOrgResources(*orgID))
opts = append(opts, pkger.CreateWithAllOrgResources(orgID))

return b.writePkg(cmd.OutOrStdout(), pkgSVC, b.file, opts...)
}
Expand Down Expand Up @@ -507,21 +503,26 @@ func createPkgBuf(pkg *pkger.Pkg, outPath string) (*bytes.Buffer, error) {
return &buf, nil
}

func newPkgerSVC(cliReqOpts httpClientOpts, opts ...pkger.ServiceSetterFn) (pkger.SVC, error) {
func newPkgerSVC(cliReqOpts httpClientOpts, opts ...pkger.ServiceSetterFn) (pkger.SVC, influxdb.OrganizationService, error) {
httpClient, err := newHTTPClient()
if err != nil {
return nil, err
return nil, nil, err
}

orgSvc := &ihttp.OrganizationService{
Client: httpClient,
}

return pkger.NewService(
append(opts,
pkger.WithBucketSVC(&ihttp.BucketService{Client: httpClient}),
pkger.WithDashboardSVC(&ihttp.DashboardService{Client: httpClient}),
pkger.WithLabelSVC(&ihttp.LabelService{Client: httpClient}),
pkger.WithNoticationEndpointSVC(ihttp.NewNotificationEndpointService(httpClient)),
pkger.WithTelegrafSVC(ihttp.NewTelegrafService(httpClient)),
pkger.WithVariableSVC(&ihttp.VariableService{Client: httpClient}),
)...,
), nil
), orgSvc, nil
}

func pkgFromReader(stdin io.Reader) (*pkger.Pkg, error) {
Expand Down Expand Up @@ -654,6 +655,18 @@ func (b *cmdPkgBuilder) printPkgDiff(diff pkger.Diff) {
})
}

if endpoints := diff.NotificationEndpoints; len(endpoints) > 0 {
headers := []string{"New", "ID", "Name"}
tablePrintFn("NOTIFICATION ENDPOINTS", headers, len(endpoints), func(i int) []string {
v := endpoints[i]
return []string{
boolDiff(v.IsNew()),
v.ID.String(),
v.Name,
}
})
}

if teles := diff.Telegrafs; len(diff.Telegrafs) > 0 {
headers := []string{"New", "Name", "Description"}
tablePrintFn("TELEGRAF CONFIGS", headers, len(teles), func(i int) []string {
Expand Down Expand Up @@ -733,6 +746,19 @@ func (b *cmdPkgBuilder) printPkgSummary(sum pkger.Summary) {
})
}

if endpoints := sum.NotificationEndpoints; len(endpoints) > 0 {
headers := []string{"ID", "Name", "Description", "Status"}
tablePrintFn("NOTIFICATION ENDPOINTS", headers, len(endpoints), func(i int) []string {
v := endpoints[i]
return []string{
v.GetID().String(),
v.GetName(),
v.GetDescription(),
string(v.GetStatus()),
}
})
}

if teles := sum.TelegrafConfigs; len(teles) > 0 {
headers := []string{"ID", "Name", "Description"}
tablePrintFn("TELEGRAF CONFIGS", headers, len(teles), func(i int) []string {
Expand Down
29 changes: 26 additions & 3 deletions cmd/influx/pkg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,21 @@ import (

"github.com/influxdata/influxdb"
"github.com/influxdata/influxdb/kit/errors"
"github.com/influxdata/influxdb/mock"
"github.com/influxdata/influxdb/pkger"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func Test_Pkg(t *testing.T) {
fakeSVCFn := func(svc pkger.SVC) pkgSVCFn {
return func(opts httpClientOpts, _ ...pkger.ServiceSetterFn) (pkger.SVC, error) {
return svc, nil
fakeSVCFn := func(svc pkger.SVC) pkgSVCsFn {
return func(opts httpClientOpts, _ ...pkger.ServiceSetterFn) (pkger.SVC, influxdb.OrganizationService, error) {
return svc, &mock.OrganizationService{
FindOrganizationF: func(ctx context.Context, filter influxdb.OrganizationFilter) (*influxdb.Organization, error) {
return &influxdb.Organization{ID: influxdb.ID(9000), Name: "influxdata"}, nil
},
}, nil
}
}

Expand Down Expand Up @@ -126,6 +131,24 @@ func Test_Pkg(t *testing.T) {
Version: "new version",
},
},
{
pkgFileArgs: pkgFileArgs{
name: "yaml out",
encoding: pkger.EncodingYAML,
filename: "pkg_0.yml",
flags: []flagArg{
{name: "name", val: "new name"},
{name: "description", val: "new desc"},
{name: "version", val: "new version"},
{name: "org", val: "influxdata"},
},
},
expectedMeta: pkger.Metadata{
Name: "new name",
Description: "new desc",
Version: "new version",
},
},
}

cmdFn := func() *cobra.Command {
Expand Down
Loading

0 comments on commit 998887b

Please sign in to comment.