Add error type and fix a few things up

apigen
Jeff Mitchell 6 years ago
parent 24d82ebe4e
commit 3d4be5608f

@ -0,0 +1,44 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 14:33:51.4620286 -0400 EDT m=+0.042201401
package api
import (
"encoding/json"
"github.com/fatih/structs"
"github.com/hashicorp/watchtower/api/internal/strutil"
)
type Error struct {
defaultFields []string
// The HTTP Status code applicable to this error
Status *int64 `json:"status,omitempty"`
// An application-specific error string
Code *string `json:"code,omitempty"`
// A human readable explanation specific to this occurrence of the error
Message *string `json:"message,omitempty"`
// Additional metadata regarding the error. Depending on the error
// different fields will be populated.
Details *ErrorDetails `json:"details,omitempty"`
}
func (s *Error) SetDefault(key string) {
s.defaultFields = strutil.AppendIfMissing(s.defaultFields, key)
}
func (s *Error) UnsetDefault(key string) {
s.defaultFields = strutil.StrListDelete(s.defaultFields, key)
}
func (s Error) MarshalJSON() ([]byte, error) {
m := structs.Map(s)
if m == nil {
m = make(map[string]interface{})
}
for _, k := range s.defaultFields {
m[k] = nil
}
return json.Marshal(m)
}

@ -0,0 +1,38 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 14:33:51.462308 -0400 EDT m=+0.042480801
package api
import (
"encoding/json"
"github.com/fatih/structs"
"github.com/hashicorp/watchtower/api/internal/strutil"
)
type ErrorDetails struct {
defaultFields []string
TraceId *string `json:"trace_id,omitempty"`
RequestId *string `json:"request_id,omitempty"`
RequestFields []string `json:"request_fields,omitempty"`
}
func (s *ErrorDetails) SetDefault(key string) {
s.defaultFields = strutil.AppendIfMissing(s.defaultFields, key)
}
func (s *ErrorDetails) UnsetDefault(key string) {
s.defaultFields = strutil.StrListDelete(s.defaultFields, key)
}
func (s ErrorDetails) MarshalJSON() ([]byte, error) {
m := structs.Map(s)
if m == nil {
m = make(map[string]interface{})
}
for _, k := range s.defaultFields {
m[k] = nil
}
return json.Marshal(m)
}

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 13:43:08.126021 -0400 EDT m=+0.032030001
// 2020-05-03 14:33:51.4628286 -0400 EDT m=+0.043001401
package hosts
import (

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 13:43:08.1253741 -0400 EDT m=+0.031383201
// 2020-05-03 14:33:51.4624224 -0400 EDT m=+0.042595201
package hosts
import (

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 13:43:08.1257653 -0400 EDT m=+0.031774501
// 2020-05-03 14:33:51.4626029 -0400 EDT m=+0.042775701
package hosts
import (

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 13:43:08.1256396 -0400 EDT m=+0.031648601
// 2020-05-03 14:33:51.4625345 -0400 EDT m=+0.042707301
package hosts
import (

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2020-05-03 13:43:08.1258801 -0400 EDT m=+0.031889201
// 2020-05-03 14:33:51.4627143 -0400 EDT m=+0.042887101
package hosts
import (

@ -42,6 +42,28 @@ var (
regex = regexp.MustCompile(`(json:".*")`)
inputStructs = []*generateInfo{
{
os.Getenv("APIGEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
"Error",
os.Getenv("APIGEN_BASEPATH") + "/api/error.go",
"Error",
"api",
"",
"",
"",
templateTypeResource,
},
{
os.Getenv("APIGEN_BASEPATH") + "/internal/gen/controller/api/error.pb.go",
"ErrorDetails",
os.Getenv("APIGEN_BASEPATH") + "/api/error_details.go",
"ErrorDetails",
"api",
"",
"",
"",
templateTypeResource,
},
{
os.Getenv("APIGEN_BASEPATH") + "/internal/gen/controller/api/resources/hosts/host.pb.go",
"Host",
@ -167,7 +189,7 @@ func createStructs() {
// Add default fields if a base resource
if inputStruct.templateType == templateTypeResource {
st.Fields.List = append([]*ast.Field{&ast.Field{
st.Fields.List = append([]*ast.Field{{
Names: []*ast.Ident{
{
Name: "defaultFields",
@ -325,7 +347,7 @@ func createStructs() {
var outBuf []string
for scanner.Scan() {
if !inType {
if strings.HasPrefix(scanner.Text(), "type "+inputStruct.outName) {
if strings.HasPrefix(scanner.Text(), "type "+inputStruct.outName+" struct") {
inType = true
// Don't add this line, we'll do it in the template
continue

@ -4,3 +4,4 @@ package main
//go:generate go run genapi.go
//go:generate goimports -w ../../hosts
//go:generate goimports -w ../..

@ -8,6 +8,7 @@ package api
import (
proto "github.com/golang/protobuf/proto"
wrappers "github.com/golang/protobuf/ptypes/wrappers"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
@ -30,9 +31,9 @@ type ErrorDetails struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
TraceId string `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
RequestFields []string `protobuf:"bytes,3,rep,name=request_fields,json=requestFields,proto3" json:"request_fields,omitempty"`
TraceId *wrappers.StringValue `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
RequestId *wrappers.StringValue `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
RequestFields []string `protobuf:"bytes,3,rep,name=request_fields,json=requestFields,proto3" json:"request_fields,omitempty"`
}
func (x *ErrorDetails) Reset() {
@ -67,18 +68,18 @@ func (*ErrorDetails) Descriptor() ([]byte, []int) {
return file_controller_api_v1_error_proto_rawDescGZIP(), []int{0}
}
func (x *ErrorDetails) GetTraceId() string {
func (x *ErrorDetails) GetTraceId() *wrappers.StringValue {
if x != nil {
return x.TraceId
}
return ""
return nil
}
func (x *ErrorDetails) GetRequestId() string {
func (x *ErrorDetails) GetRequestId() *wrappers.StringValue {
if x != nil {
return x.RequestId
}
return ""
return nil
}
func (x *ErrorDetails) GetRequestFields() []string {
@ -94,13 +95,14 @@ type Error struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The HTTP Status code applicable to this error.
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
// An application-specific error string.
Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
// A human readable explanation specific to this occurrence of the error.
Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// Additional metadata regarding the error. Depending on the error different fields will be populated.
// The HTTP Status code applicable to this error
Status *wrappers.Int64Value `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
// An application-specific error string
Code *wrappers.StringValue `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
// A human readable explanation specific to this occurrence of the error
Message *wrappers.StringValue `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// Additional metadata regarding the error. Depending on the error
// different fields will be populated.
Details *ErrorDetails `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"`
}
@ -136,25 +138,25 @@ func (*Error) Descriptor() ([]byte, []int) {
return file_controller_api_v1_error_proto_rawDescGZIP(), []int{1}
}
func (x *Error) GetStatus() int32 {
func (x *Error) GetStatus() *wrappers.Int64Value {
if x != nil {
return x.Status
}
return 0
return nil
}
func (x *Error) GetCode() string {
func (x *Error) GetCode() *wrappers.StringValue {
if x != nil {
return x.Code
}
return ""
return nil
}
func (x *Error) GetMessage() string {
func (x *Error) GetMessage() *wrappers.StringValue {
if x != nil {
return x.Message
}
return ""
return nil
}
func (x *Error) GetDetails() *ErrorDetails {
@ -170,27 +172,38 @@ var file_controller_api_v1_error_proto_rawDesc = []byte{
0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x76, 0x31, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x22, 0x6f, 0x0a, 0x0c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69,
0x6c, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a,
0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e,
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03,
0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65,
0x6c, 0x64, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65,
0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65,
0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x41,
0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73,
0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x74, 0x6f, 0x77, 0x65,
0x72, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70,
0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xab, 0x01, 0x0a, 0x0c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0a,
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09,
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
0x09, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73,
0x22, 0xe1, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74,
0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x64, 0x65, 0x74,
0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45,
0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74,
0x61, 0x69, 0x6c, 0x73, 0x42, 0x41, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x77, 0x61, 0x74,
0x63, 0x68, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f,
0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -207,16 +220,23 @@ func file_controller_api_v1_error_proto_rawDescGZIP() []byte {
var file_controller_api_v1_error_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_controller_api_v1_error_proto_goTypes = []interface{}{
(*ErrorDetails)(nil), // 0: controller.api.v1.ErrorDetails
(*Error)(nil), // 1: controller.api.v1.Error
(*ErrorDetails)(nil), // 0: controller.api.v1.ErrorDetails
(*Error)(nil), // 1: controller.api.v1.Error
(*wrappers.StringValue)(nil), // 2: google.protobuf.StringValue
(*wrappers.Int64Value)(nil), // 3: google.protobuf.Int64Value
}
var file_controller_api_v1_error_proto_depIdxs = []int32{
0, // 0: controller.api.v1.Error.details:type_name -> controller.api.v1.ErrorDetails
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
2, // 0: controller.api.v1.ErrorDetails.trace_id:type_name -> google.protobuf.StringValue
2, // 1: controller.api.v1.ErrorDetails.request_id:type_name -> google.protobuf.StringValue
3, // 2: controller.api.v1.Error.status:type_name -> google.protobuf.Int64Value
2, // 3: controller.api.v1.Error.code:type_name -> google.protobuf.StringValue
2, // 4: controller.api.v1.Error.message:type_name -> google.protobuf.StringValue
0, // 5: controller.api.v1.Error.details:type_name -> controller.api.v1.ErrorDetails
6, // [6:6] is the sub-list for method output_type
6, // [6:6] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
}
func init() { file_controller_api_v1_error_proto_init() }

@ -4,20 +4,23 @@ package controller.api.v1;
option go_package = "github.com/hashicorp/watchtower/internal/gen/controller/api;api";
import "google/protobuf/wrappers.proto";
message ErrorDetails {
string trace_id = 1;
string request_id = 2;
repeated string request_fields = 3;
google.protobuf.StringValue trace_id = 1;
google.protobuf.StringValue request_id = 2;
repeated string request_fields = 3;
}
// Error is returned by the JSON API when an error occurs.
message Error {
// The HTTP Status code applicable to this error.
int32 status = 1;
// An application-specific error string.
string code = 2;
// A human readable explanation specific to this occurrence of the error.
string message = 3;
// Additional metadata regarding the error. Depending on the error different fields will be populated.
ErrorDetails details = 4;
// The HTTP Status code applicable to this error
google.protobuf.Int64Value status = 1;
// An application-specific error string
google.protobuf.StringValue code = 2;
// A human readable explanation specific to this occurrence of the error
google.protobuf.StringValue message = 3;
// Additional metadata regarding the error. Depending on the error
// different fields will be populated.
ErrorDetails details = 4;
}

Loading…
Cancel
Save