fix(pkger): fix missing API version in export of existing resources

pull/16541/head
Johnny Steenbergen 2020-01-14 13:49:29 -08:00 committed by Johnny Steenbergen
parent 63fd1e2e9a
commit 234c458fa0
4 changed files with 51 additions and 25 deletions

View File

@ -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
},
@ -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},
})
}

View File

@ -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 {
@ -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,
},
@ -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,
@ -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{
@ -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(),
@ -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,
},
@ -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,
},
@ -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,
},
@ -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})

View File

@ -767,6 +767,7 @@ type SummaryVariable struct {
}
const (
fieldAPIVersion = "apiVersion"
fieldAssociations = "associations"
fieldDescription = "description"
fieldEvery = "every"

View File

@ -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(),
},
},
@ -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(),