Skip to content

Commit

Permalink
export SpecSchemaDefinition and add isStatusIdentifier to SchemaDefin…
Browse files Browse the repository at this point in the history
…itionProperty constructors
  • Loading branch information
dikhan committed Oct 6, 2018
1 parent 68d5e0a commit 9f3c4ed
Show file tree
Hide file tree
Showing 7 changed files with 425 additions and 424 deletions.
4 changes: 2 additions & 2 deletions openapi/openapi_spec_resource_schema_definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
// specSchemaDefinitionProperties defines a collection of schema definition properties
type specSchemaDefinitionProperties []*specSchemaDefinitionProperty

// specSchemaDefinition defines a struct for a schema definition
// SpecSchemaDefinition defines a struct for a schema definition
type specSchemaDefinition struct {
Properties specSchemaDefinitionProperties
}
Expand Down Expand Up @@ -119,7 +119,7 @@ func (s *specSchemaDefinition) getStatusIdentifierFor(schemaDefinition *specSche

statusHierarchy = append(statusHierarchy, statusProperty.Name)
if statusProperty.isObjectProperty() {
statusIdentifier, err := s.getStatusIdentifierFor(statusProperty.specSchemaDefinition, false, false)
statusIdentifier, err := s.getStatusIdentifierFor(statusProperty.SpecSchemaDefinition, false, false)
if err != nil {
return nil, err
}
Expand Down
57 changes: 29 additions & 28 deletions openapi/openapi_spec_resource_schema_definition_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,61 +36,62 @@ type specSchemaDefinitionProperty struct {
IsStatusIdentifier bool
Default interface{}
// only for object type properties
specSchemaDefinition *specSchemaDefinition
SpecSchemaDefinition *specSchemaDefinition
}

func newStringSchemaDefinitionPropertyWithDefaults(name, preferredName string, required, readOnly bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newStringSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, defaultValue)
return newStringSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, false, defaultValue)
}

func newStringSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeString, required, readOnly, forceNew, sensitive, immutable, isIdentifier, defaultValue)
func newStringSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeString, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier, defaultValue)
}

func newIntSchemaDefinitionPropertyWithDefaults(name, preferredName string, required, readOnly bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newIntSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, defaultValue)
return newIntSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, false, defaultValue)
}

func newIntSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeInt, required, readOnly, forceNew, sensitive, immutable, isIdentifier, defaultValue)
func newIntSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeInt, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier, defaultValue)
}

func newNumberSchemaDefinitionPropertyWithDefaults(name, preferredName string, required, readOnly bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newNumberSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, defaultValue)
return newNumberSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, false, defaultValue)
}

func newNumberSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeFloat, required, readOnly, forceNew, sensitive, immutable, isIdentifier, defaultValue)
func newNumberSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeFloat, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier, defaultValue)
}

func newBoolSchemaDefinitionPropertyWithDefaults(name, preferredName string, required, readOnly bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newBoolSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, defaultValue)
return newBoolSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, false, defaultValue)
}

func newBoolSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeBool, required, readOnly, forceNew, sensitive, immutable, isIdentifier, defaultValue)
func newBoolSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeBool, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier, defaultValue)
}

func newListSchemaDefinitionPropertyWithDefaults(name, preferredName string, required, readOnly bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newListSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, defaultValue)
return newListSchemaDefinitionProperty(name, preferredName, required, readOnly, false, false, false, false, false, defaultValue)
}

func newListSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeList, required, readOnly, forceNew, sensitive, immutable, isIdentifier, defaultValue)
func newListSchemaDefinitionProperty(name, preferredName string, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return newSchemaDefinitionProperty(name, preferredName, typeList, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier, defaultValue)
}

func newSchemaDefinitionProperty(name, preferredName string, propertyType schemaDefinitionPropertyType, required, readOnly, forceNew, sensitive, immutable, isIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
func newSchemaDefinitionProperty(name, preferredName string, propertyType schemaDefinitionPropertyType, required, readOnly, forceNew, sensitive, immutable, isIdentifier, isStatusIdentifier bool, defaultValue interface{}) *specSchemaDefinitionProperty {
return &specSchemaDefinitionProperty{
Name: name,
PreferredName: preferredName,
Type: propertyType,
Required: required,
ReadOnly: readOnly,
ForceNew: forceNew,
Sensitive: sensitive,
Immutable: immutable,
IsIdentifier: isIdentifier,
Default: defaultValue,
Name: name,
PreferredName: preferredName,
Type: propertyType,
Required: required,
ReadOnly: readOnly,
ForceNew: forceNew,
Sensitive: sensitive,
Immutable: immutable,
IsIdentifier: isIdentifier,
IsStatusIdentifier: isStatusIdentifier,
Default: defaultValue,
}
}

Expand Down Expand Up @@ -130,7 +131,7 @@ func (s *specSchemaDefinitionProperty) terraformSchema() (*schema.Schema, error)
var terraformSchema = &schema.Schema{}
switch s.Type {
case typeObject:
objectSchema, err := s.specSchemaDefinition.createResourceSchemaKeepID()
objectSchema, err := s.SpecSchemaDefinition.createResourceSchemaKeepID()
if err != nil {
return nil, err
}
Expand Down
10 changes: 5 additions & 5 deletions openapi/openapi_spec_resource_schema_definition_property_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ func TestCreateTerraformPropertySchema(t *testing.T) {
Convey("Given a resource factory", t, func() {
//r := resourceFactory{}
Convey("When createTerraformPropertySchema is called with a schema definition property that is required, force new, sensitive and has a default value", func() {
s := newStringSchemaDefinitionProperty("propertyName", "", true, false, true, true, false, false, "defaultValue")
s := newStringSchemaDefinitionProperty("propertyName", "", true, false, true, true, false, false, false, "defaultValue")
terraformPropertySchema, err := s.terraformSchema()
Convey("Then the error returned should be nil", func() {
So(err, ShouldBeNil)
Expand All @@ -36,7 +36,7 @@ func TestCreateTerraformPropertySchema(t *testing.T) {
})

Convey("When createTerraformPropertySchema is called with a schema definition property that is readonly", func() {
s := newStringSchemaDefinitionProperty("propertyName", "", false, true, false, false, false, false, "")
s := newStringSchemaDefinitionProperty("propertyName", "", false, true, false, false, false, false, false, "")
terraformPropertySchema, err := s.terraformSchema()
Convey("Then the error returned should be nil", func() {
So(err, ShouldBeNil)
Expand All @@ -50,7 +50,7 @@ func TestCreateTerraformPropertySchema(t *testing.T) {
})

Convey("When createTerraformPropertySchema is called with a schema definition property that validation fails due to read only field having a default value", func() {
s := newStringSchemaDefinitionProperty("propertyName", "", false, true, false, false, false, false, "defaultValue")
s := newStringSchemaDefinitionProperty("propertyName", "", false, true, false, false, false, false, false, "defaultValue")
terraformPropertySchema, err := s.terraformSchema()
Convey("Then the error returned should be nil", func() {
So(err, ShouldBeNil)
Expand All @@ -70,7 +70,7 @@ func TestCreateTerraformPropertySchema(t *testing.T) {
})

Convey("When createTerraformPropertySchema is called with a schema definition property that validation fails due to immutable and forceNew set", func() {
s := newStringSchemaDefinitionProperty("propertyName", "", false, false, true, false, true, false, "")
s := newStringSchemaDefinitionProperty("propertyName", "", false, false, true, false, true, false, false, "")
terraformPropertySchema, err := s.terraformSchema()
Convey("Then the error returned should be nil", func() {
So(err, ShouldBeNil)
Expand All @@ -87,7 +87,7 @@ func TestCreateTerraformPropertySchema(t *testing.T) {
})

Convey("When createTerraformPropertySchema is called with a schema definition property that validation fails due to required and computed set", func() {
s := newStringSchemaDefinitionProperty("propertyName", "", true, true, false, false, false, false, nil)
s := newStringSchemaDefinitionProperty("propertyName", "", true, true, false, false, false, false, false, nil)
terraformPropertySchema, err := s.terraformSchema()
Convey("Then the error returned should be nil", func() {
So(err, ShouldBeNil)
Expand Down
4 changes: 2 additions & 2 deletions openapi/openapi_spec_resource_schema_definition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

func TestGetStatusId(t *testing.T) {
Convey("Given a specSchemaDefinition that has an status property that is not an object", t, func() {
Convey("Given a SpecSchemaDefinition that has an status property that is not an object", t, func() {
s := &specSchemaDefinition{
Properties: specSchemaDefinitionProperties{
&specSchemaDefinitionProperty{
Expand Down Expand Up @@ -102,7 +102,7 @@ func TestGetStatusId(t *testing.T) {
Name: statusDefaultPropertyName,
Type: typeObject,
ReadOnly: true,
specSchemaDefinition: &specSchemaDefinition{
SpecSchemaDefinition: &specSchemaDefinition{
Properties: specSchemaDefinitionProperties{
&specSchemaDefinitionProperty{
Name: expectedStatusProperty,
Expand Down
4 changes: 2 additions & 2 deletions openapi/openapi_v2_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ type SpecV2Resource struct {
Region string
// Path contains the full relative path to the resource e,g: /v1/resource
Path string
// specSchemaDefinition definition represents the representational state (aka model) of the resource
// SpecSchemaDefinition definition represents the representational state (aka model) of the resource
SchemaDefinition spec.Schema
// RootPathItem contains info about the resource root path e,g: /resource, including the POST operation used to create instances of this resource
RootPathItem spec.PathItem
Expand Down Expand Up @@ -215,7 +215,7 @@ func (o *SpecV2Resource) createSchemaDefinitionProperty(propertyName string, pro
if err != nil {
return nil, err
}
schemaDefinitionProperty.specSchemaDefinition = objectSchemaDefinition
schemaDefinitionProperty.SpecSchemaDefinition = objectSchemaDefinition
schemaDefinitionProperty.Type = typeObject
} else if o.isArrayProperty(property) {
schemaDefinitionProperty.Type = typeList
Expand Down
Loading

0 comments on commit 9f3c4ed

Please sign in to comment.