Skip to content

Commit

Permalink
fix(pkger): fix missing API version in export of existing resources
Browse files Browse the repository at this point in the history
  • Loading branch information
jsteenb2 committed Jan 14, 2020
1 parent 63fd1e2 commit 234c458
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 25 deletions.
10 changes: 6 additions & 4 deletions cmd/influx/pkg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,9 @@ func TestCmdPkg(t *testing.T) {

var pkg pkger.Pkg
pkg.Objects = append(pkg.Objects, pkger.Object{
Type: pkger.KindBucket,
Metadata: pkger.Metadata{Name: "bucket1"},
APIVersion: pkger.APIVersion,
Type: pkger.KindBucket,
Metadata: pkger.Metadata{Name: "bucket1"},
})
return &pkg, nil
},
Expand Down Expand Up @@ -207,8 +208,9 @@ func TestCmdPkg(t *testing.T) {
}
name := rc.Kind.String() + strconv.Itoa(int(rc.ID))
pkg.Objects = append(pkg.Objects, pkger.Object{
Type: rc.Kind,
Metadata: pkger.Metadata{Name: name},
APIVersion: pkger.APIVersion,
Type: rc.Kind,
Metadata: pkger.Metadata{Name: name},
})
}

Expand Down
49 changes: 29 additions & 20 deletions pkger/clone_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,10 @@ func bucketToObject(bkt influxdb.Bucket, name string) Object {
name = bkt.Name
}
k := Object{
Type: KindBucket,
Metadata: Metadata{Name: name},
Spec: make(Resource),
APIVersion: APIVersion,
Type: KindBucket,
Metadata: Metadata{Name: name},
Spec: make(Resource),
}
assignNonZeroStrings(k.Spec, map[string]string{fieldDescription: bkt.Description})
if bkt.RetentionPeriod != 0 {
Expand All @@ -78,7 +79,8 @@ func checkToObject(ch influxdb.Check, name string) Object {
name = ch.GetName()
}
k := Object{
Metadata: Metadata{Name: name},
APIVersion: APIVersion,
Metadata: Metadata{Name: name},
Spec: Resource{
fieldStatus: influxdb.TaskStatusActive,
},
Expand Down Expand Up @@ -381,8 +383,9 @@ func DashboardToObject(dash influxdb.Dashboard, name string) Object {
}

return Object{
Type: KindDashboard,
Metadata: Metadata{Name: name},
APIVersion: APIVersion,
Type: KindDashboard,
Metadata: Metadata{Name: name},
Spec: Resource{
fieldDescription: dash.Description,
fieldDashCharts: charts,
Expand All @@ -395,9 +398,10 @@ func labelToObject(l influxdb.Label, name string) Object {
name = l.Name
}
k := Object{
Type: KindLabel,
Metadata: Metadata{Name: name},
Spec: make(Resource),
APIVersion: APIVersion,
Type: KindLabel,
Metadata: Metadata{Name: name},
Spec: make(Resource),
}

assignNonZeroStrings(k.Spec, map[string]string{
Expand All @@ -412,8 +416,9 @@ func endpointKind(e influxdb.NotificationEndpoint, name string) Object {
name = e.GetName()
}
k := Object{
Metadata: Metadata{Name: name},
Spec: make(Resource),
APIVersion: APIVersion,
Metadata: Metadata{Name: name},
Spec: make(Resource),
}
assignNonZeroStrings(k.Spec, map[string]string{
fieldDescription: e.GetDescription(),
Expand Down Expand Up @@ -453,8 +458,9 @@ func ruleToObject(iRule influxdb.NotificationRule, endpointName, name string) Ob
name = iRule.GetName()
}
k := Object{
Type: KindNotificationRule,
Metadata: Metadata{Name: name},
APIVersion: APIVersion,
Type: KindNotificationRule,
Metadata: Metadata{Name: name},
Spec: Resource{
fieldNotificationRuleEndpointName: endpointName,
},
Expand Down Expand Up @@ -522,8 +528,9 @@ func taskToObject(t influxdb.Task, name string) Object {
query := strings.TrimSpace(taskFluxRegex.ReplaceAllString(t.Flux, ""))

k := Object{
Type: KindTask,
Metadata: Metadata{Name: name},
APIVersion: APIVersion,
Type: KindTask,
Metadata: Metadata{Name: name},
Spec: Resource{
fieldQuery: query,
},
Expand All @@ -542,8 +549,9 @@ func telegrafToObject(t influxdb.TelegrafConfig, name string) Object {
name = t.Name
}
k := Object{
Type: KindTelegraf,
Metadata: Metadata{Name: name},
APIVersion: APIVersion,
Type: KindTelegraf,
Metadata: Metadata{Name: name},
Spec: Resource{
fieldTelegrafConfig: t.Config,
},
Expand All @@ -561,9 +569,10 @@ func VariableToObject(v influxdb.Variable, name string) Object {
}

k := Object{
Type: KindVariable,
Metadata: Metadata{Name: name},
Spec: make(Resource),
APIVersion: APIVersion,
Type: KindVariable,
Metadata: Metadata{Name: name},
Spec: make(Resource),
}
assignNonZeroStrings(k.Spec, map[string]string{fieldDescription: v.Description})

Expand Down
1 change: 1 addition & 0 deletions pkger/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -767,6 +767,7 @@ type SummaryVariable struct {
}

const (
fieldAPIVersion = "apiVersion"
fieldAssociations = "associations"
fieldDescription = "description"
fieldEvery = "every"
Expand Down
16 changes: 15 additions & 1 deletion pkger/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -952,7 +952,7 @@ func (p *Pkg) eachResource(resourceKind Kind, minNameLen int, fn func(r Object)
Idx: intPtr(i),
ValidationErrs: []validationErr{
{
Field: "kind",
Field: fieldKind,
Msg: err.Error(),
},
},
Expand All @@ -963,6 +963,20 @@ func (p *Pkg) eachResource(resourceKind Kind, minNameLen int, fn func(r Object)
continue
}

if k.APIVersion != APIVersion {
pErr.append(resourceErr{
Kind: k.Type.String(),
Idx: intPtr(i),
ValidationErrs: []validationErr{
{
Field: fieldAPIVersion,
Msg: fmt.Sprintf("invalid API version provided %q; must be 1 in [%s]", k.APIVersion, APIVersion),
},
},
})
continue
}

if len(k.Name()) < minNameLen {
pErr.append(resourceErr{
Kind: k.Type.String(),
Expand Down

0 comments on commit 234c458

Please sign in to comment.