Add bolt implementation of OrganizationsStore

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
pull/10616/head
Jared Scheib 2017-10-20 10:14:09 -04:00
parent 30096623f9
commit 41386ca546
6 changed files with 295 additions and 72 deletions

View File

@ -16,11 +16,12 @@ type Client struct {
Now func() time.Time
LayoutIDs chronograf.ID
SourcesStore *SourcesStore
ServersStore *ServersStore
LayoutStore *LayoutStore
UsersStore *UsersStore
DashboardsStore *DashboardsStore
SourcesStore *SourcesStore
ServersStore *ServersStore
LayoutStore *LayoutStore
UsersStore *UsersStore
DashboardsStore *DashboardsStore
OrganizationsStore *OrganizationsStore
}
// NewClient initializes all stores
@ -29,6 +30,7 @@ func NewClient() *Client {
c.SourcesStore = &SourcesStore{client: c}
c.ServersStore = &ServersStore{client: c}
c.UsersStore = &UsersStore{client: c}
c.OrganizationsStore = &OrganizationsStore{client: c}
c.LayoutStore = &LayoutStore{
client: c,
IDs: &uuid.V4{},
@ -70,6 +72,10 @@ func (c *Client) Open(ctx context.Context) error {
if _, err := tx.CreateBucketIfNotExists(UsersBucket); err != nil {
return err
}
// Always create Organizations bucket.
if _, err := tx.CreateBucketIfNotExists(OrganizationsBucket); err != nil {
return err
}
return nil
}); err != nil {
return err

View File

@ -458,3 +458,34 @@ func UnmarshalUserPB(data []byte, u *User) error {
}
return nil
}
// MarshalOrganization encodes a organization to binary protobuf format.
func MarshalOrganization(o *chronograf.Organization) ([]byte, error) {
return MarshalOrganizationPB(&Organization{
Name: o.Name,
})
}
// MarshalOrganizationPB encodes a organization to binary protobuf format.
func MarshalOrganizationPB(o *Organization) ([]byte, error) {
return proto.Marshal(o)
}
// UnmarshalOrganization decodes a organization from binary protobuf data.
func UnmarshalOrganization(data []byte, o *chronograf.Organization) error {
var pb Organization
if err := UnmarshalOrganizationPB(data, &pb); err != nil {
return err
}
o.Name = pb.Name
return nil
}
// UnmarshalOrganizationPB decodes a organization from binary protobuf data.
func UnmarshalOrganizationPB(data []byte, o *Organization) error {
if err := proto.Unmarshal(data, o); err != nil {
return err
}
return nil
}

View File

@ -23,6 +23,7 @@ It has these top-level messages:
Range
AlertRule
User
Organization
*/
package internal
@ -311,6 +312,15 @@ func (m *User) String() string { return proto.CompactTextString(m) }
func (*User) ProtoMessage() {}
func (*User) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{13} }
type Organization struct {
Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
}
func (m *Organization) Reset() { *m = Organization{} }
func (m *Organization) String() string { return proto.CompactTextString(m) }
func (*Organization) ProtoMessage() {}
func (*Organization) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{14} }
func init() {
proto.RegisterType((*Source)(nil), "internal.Source")
proto.RegisterType((*Dashboard)(nil), "internal.Dashboard")
@ -326,76 +336,78 @@ func init() {
proto.RegisterType((*Range)(nil), "internal.Range")
proto.RegisterType((*AlertRule)(nil), "internal.AlertRule")
proto.RegisterType((*User)(nil), "internal.User")
proto.RegisterType((*Organization)(nil), "internal.Organization")
}
func init() { proto.RegisterFile("internal.proto", fileDescriptorInternal) }
var fileDescriptorInternal = []byte{
// 1052 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x41, 0x8f, 0xdb, 0x44,
0x14, 0xd6, 0xc4, 0x76, 0x12, 0xbf, 0x6c, 0x17, 0x34, 0xaa, 0xa8, 0x29, 0x97, 0x60, 0x81, 0x14,
0x24, 0xba, 0xa0, 0x56, 0x48, 0x88, 0x5b, 0x76, 0x83, 0xaa, 0x65, 0xb7, 0x65, 0x99, 0xec, 0x2e,
0x27, 0x54, 0x4d, 0x9c, 0x97, 0x8d, 0x55, 0x27, 0x36, 0x63, 0x7b, 0x13, 0xff, 0x0b, 0x7e, 0x01,
0x12, 0x12, 0x27, 0x0e, 0x1c, 0xf8, 0x03, 0xdc, 0xfb, 0xab, 0xd0, 0x9b, 0x19, 0x3b, 0x0e, 0x5d,
0xaa, 0x5e, 0xe8, 0x6d, 0xbe, 0xf7, 0x26, 0x6f, 0x66, 0xde, 0xf7, 0xbe, 0x2f, 0x86, 0xc3, 0x78,
0x5d, 0xa0, 0x5a, 0xcb, 0xe4, 0x28, 0x53, 0x69, 0x91, 0xf2, 0x7e, 0x8d, 0xc3, 0x3f, 0x3b, 0xd0,
0x9d, 0xa6, 0xa5, 0x8a, 0x90, 0x1f, 0x42, 0xe7, 0x74, 0x12, 0xb0, 0x21, 0x1b, 0x39, 0xa2, 0x73,
0x3a, 0xe1, 0x1c, 0xdc, 0xe7, 0x72, 0x85, 0x41, 0x67, 0xc8, 0x46, 0xbe, 0xd0, 0x6b, 0x8a, 0x5d,
0x56, 0x19, 0x06, 0x8e, 0x89, 0xd1, 0x9a, 0x3f, 0x84, 0xfe, 0x55, 0x4e, 0xd5, 0x56, 0x18, 0xb8,
0x3a, 0xde, 0x60, 0xca, 0x5d, 0xc8, 0x3c, 0xdf, 0xa4, 0x6a, 0x1e, 0x78, 0x26, 0x57, 0x63, 0xfe,
0x3e, 0x38, 0x57, 0xe2, 0x3c, 0xe8, 0xea, 0x30, 0x2d, 0x79, 0x00, 0xbd, 0x09, 0x2e, 0x64, 0x99,
0x14, 0x41, 0x6f, 0xc8, 0x46, 0x7d, 0x51, 0x43, 0xaa, 0x73, 0x89, 0x09, 0xde, 0x28, 0xb9, 0x08,
0xfa, 0xa6, 0x4e, 0x8d, 0xf9, 0x11, 0xf0, 0xd3, 0x75, 0x8e, 0x51, 0xa9, 0x70, 0xfa, 0x32, 0xce,
0xae, 0x51, 0xc5, 0x8b, 0x2a, 0xf0, 0x75, 0x81, 0x3b, 0x32, 0x74, 0xca, 0x33, 0x2c, 0x24, 0x9d,
0x0d, 0xba, 0x54, 0x0d, 0x79, 0x08, 0x07, 0xd3, 0xa5, 0x54, 0x38, 0x9f, 0x62, 0xa4, 0xb0, 0x08,
0x06, 0x3a, 0xbd, 0x17, 0x0b, 0x7f, 0x61, 0xe0, 0x4f, 0x64, 0xbe, 0x9c, 0xa5, 0x52, 0xcd, 0xdf,
0xaa, 0x67, 0x8f, 0xc0, 0x8b, 0x30, 0x49, 0xf2, 0xc0, 0x19, 0x3a, 0xa3, 0xc1, 0xe3, 0x07, 0x47,
0x0d, 0x19, 0x4d, 0x9d, 0x13, 0x4c, 0x12, 0x61, 0x76, 0xf1, 0x2f, 0xc1, 0x2f, 0x70, 0x95, 0x25,
0xb2, 0xc0, 0x3c, 0x70, 0xf5, 0x4f, 0xf8, 0xee, 0x27, 0x97, 0x36, 0x25, 0x76, 0x9b, 0xc2, 0x3f,
0x3a, 0x70, 0x6f, 0xaf, 0x14, 0x3f, 0x00, 0xb6, 0xd5, 0xb7, 0xf2, 0x04, 0xdb, 0x12, 0xaa, 0xf4,
0x8d, 0x3c, 0xc1, 0x2a, 0x42, 0x1b, 0xcd, 0x9f, 0x27, 0xd8, 0x86, 0xd0, 0x52, 0xb3, 0xe6, 0x09,
0xb6, 0xe4, 0x9f, 0x41, 0xef, 0xe7, 0x12, 0x55, 0x8c, 0x79, 0xe0, 0xe9, 0x93, 0xdf, 0xdb, 0x9d,
0xfc, 0x43, 0x89, 0xaa, 0x12, 0x75, 0x9e, 0x5e, 0xaa, 0x19, 0x37, 0xf4, 0xe9, 0x35, 0xc5, 0x0a,
0x9a, 0x8e, 0x9e, 0x89, 0xd1, 0xda, 0x76, 0xc8, 0x70, 0x46, 0x1d, 0xfa, 0x0a, 0x5c, 0xb9, 0xc5,
0x3c, 0xf0, 0x75, 0xfd, 0x8f, 0xff, 0xa3, 0x19, 0x47, 0xe3, 0x2d, 0xe6, 0xdf, 0xae, 0x0b, 0x55,
0x09, 0xbd, 0xfd, 0xe1, 0x53, 0xf0, 0x9b, 0x10, 0x4d, 0xce, 0x4b, 0xac, 0xf4, 0x03, 0x7d, 0x41,
0x4b, 0xfe, 0x09, 0x78, 0xb7, 0x32, 0x29, 0x4d, 0xe3, 0x07, 0x8f, 0x0f, 0x77, 0x65, 0xc7, 0xdb,
0x38, 0x17, 0x26, 0xf9, 0x4d, 0xe7, 0x6b, 0x16, 0xfe, 0xc5, 0xc0, 0xa5, 0x18, 0x91, 0x9d, 0xe0,
0x8d, 0x8c, 0xaa, 0xe3, 0xb4, 0x5c, 0xcf, 0xf3, 0x80, 0x0d, 0x9d, 0x91, 0x23, 0xf6, 0x62, 0xfc,
0x03, 0xe8, 0xce, 0x4c, 0xb6, 0x33, 0x74, 0x46, 0xbe, 0xb0, 0x88, 0xdf, 0x07, 0x2f, 0x91, 0x33,
0x4c, 0xac, 0x0e, 0x0c, 0xa0, 0xdd, 0x99, 0xc2, 0x45, 0xbc, 0xb5, 0x32, 0xb0, 0x88, 0xe2, 0x79,
0xb9, 0xa0, 0xb8, 0x91, 0x80, 0x45, 0xd4, 0xae, 0x99, 0xcc, 0x9b, 0x16, 0xd2, 0x9a, 0x2a, 0xe7,
0x91, 0x4c, 0xea, 0x1e, 0x1a, 0x10, 0xfe, 0xcd, 0x68, 0xfe, 0x0d, 0xdf, 0xad, 0x99, 0x33, 0x1d,
0xfd, 0x10, 0xfa, 0x34, 0x0b, 0x2f, 0x6e, 0xa5, 0xb2, 0x73, 0xd7, 0x23, 0x7c, 0x2d, 0x15, 0xff,
0x02, 0xba, 0xfa, 0xe5, 0x77, 0xcc, 0x5e, 0x5d, 0xee, 0x9a, 0xf2, 0xc2, 0x6e, 0x6b, 0x18, 0x74,
0x5b, 0x0c, 0x36, 0x8f, 0xf5, 0xda, 0x8f, 0x7d, 0x04, 0x1e, 0x8d, 0x42, 0xa5, 0x6f, 0x7f, 0x67,
0x65, 0x33, 0x30, 0x66, 0x57, 0x78, 0x05, 0xf7, 0xf6, 0x4e, 0x6c, 0x4e, 0x62, 0xfb, 0x27, 0xed,
0x58, 0xf4, 0x2d, 0x6b, 0xa4, 0xfd, 0x1c, 0x13, 0x8c, 0x0a, 0x9c, 0xeb, 0x7e, 0xf7, 0x45, 0x83,
0xc3, 0xdf, 0xd8, 0xae, 0xae, 0x3e, 0x8f, 0xd4, 0x1d, 0xa5, 0xab, 0x95, 0x5c, 0xcf, 0x6d, 0xe9,
0x1a, 0x52, 0xdf, 0xe6, 0x33, 0x5b, 0xba, 0x33, 0x9f, 0x11, 0x56, 0x99, 0x65, 0xb0, 0xa3, 0x32,
0x3e, 0x84, 0xc1, 0x0a, 0x65, 0x5e, 0x2a, 0x5c, 0xe1, 0xba, 0xb0, 0x2d, 0x68, 0x87, 0xf8, 0x03,
0xe8, 0x15, 0xf2, 0xe6, 0x05, 0xcd, 0x9e, 0x65, 0xb2, 0x90, 0x37, 0x67, 0x58, 0xf1, 0x8f, 0xc0,
0x5f, 0xc4, 0x98, 0xcc, 0x75, 0xca, 0xd0, 0xd9, 0xd7, 0x81, 0x33, 0xac, 0xc2, 0xdf, 0x19, 0x74,
0xa7, 0xa8, 0x6e, 0x51, 0xbd, 0x95, 0x5d, 0xb4, 0xed, 0xd4, 0x79, 0x83, 0x9d, 0xba, 0x77, 0xdb,
0xa9, 0xb7, 0xb3, 0xd3, 0xfb, 0xe0, 0x4d, 0x55, 0x74, 0x3a, 0xd1, 0x37, 0x72, 0x84, 0x01, 0x34,
0x8d, 0xe3, 0xa8, 0x88, 0x6f, 0xd1, 0x7a, 0xac, 0x45, 0xe1, 0xaf, 0x0c, 0xba, 0xe7, 0xb2, 0x4a,
0xcb, 0xe2, 0xb5, 0x09, 0x1b, 0xc2, 0x60, 0x9c, 0x65, 0x49, 0x1c, 0xc9, 0x22, 0x4e, 0xd7, 0xf6,
0xb6, 0xed, 0x10, 0xed, 0x78, 0xd6, 0xea, 0x9d, 0xb9, 0x77, 0x3b, 0x44, 0x0a, 0x3d, 0xd1, 0x2e,
0x68, 0x2c, 0xad, 0xa5, 0x50, 0x63, 0x7e, 0x3a, 0x49, 0x0f, 0x1c, 0x97, 0x45, 0xba, 0x48, 0xd2,
0x8d, 0x7e, 0x49, 0x5f, 0x34, 0x38, 0x7c, 0xd5, 0x01, 0xf7, 0x5d, 0xb9, 0xdb, 0x01, 0xb0, 0xd8,
0x12, 0xc9, 0xe2, 0xc6, 0xeb, 0x7a, 0x2d, 0xaf, 0x0b, 0xa0, 0x57, 0x29, 0xb9, 0xbe, 0xc1, 0x3c,
0xe8, 0x6b, 0xe7, 0xa8, 0xa1, 0xce, 0x68, 0x8d, 0x18, 0x93, 0xf3, 0x45, 0x0d, 0x9b, 0x99, 0x87,
0xd6, 0xcc, 0x7f, 0x6e, 0xfd, 0x70, 0xa0, 0x6f, 0x14, 0xec, 0xb7, 0xe5, 0xff, 0xb3, 0xc1, 0x57,
0x0c, 0xbc, 0x46, 0x30, 0x27, 0xfb, 0x82, 0x39, 0xd9, 0x09, 0x66, 0x72, 0x5c, 0x0b, 0x66, 0x72,
0x4c, 0x58, 0x5c, 0xd4, 0x82, 0x11, 0x17, 0x44, 0xd6, 0x53, 0x95, 0x96, 0xd9, 0x71, 0x65, 0x58,
0xf5, 0x45, 0x83, 0x69, 0xca, 0x7e, 0x5c, 0xa2, 0xb2, 0xad, 0xf6, 0x85, 0x45, 0x34, 0x93, 0xe7,
0xda, 0x4c, 0x4c, 0x73, 0x0d, 0xe0, 0x9f, 0x82, 0x27, 0xa8, 0x79, 0xba, 0xc3, 0x7b, 0xbc, 0xe8,
0xb0, 0x30, 0x59, 0x2a, 0x6a, 0xbe, 0x55, 0xec, 0xff, 0x89, 0x45, 0xe1, 0x13, 0xfb, 0x73, 0xaa,
0x7e, 0x95, 0x65, 0xa8, 0xac, 0xc4, 0x0c, 0xd0, 0x67, 0xa6, 0x1b, 0x34, 0xee, 0xe8, 0x08, 0x03,
0xc2, 0x9f, 0xc0, 0x1f, 0x27, 0xa8, 0x0a, 0x51, 0x26, 0xaf, 0x7b, 0x2a, 0x07, 0xf7, 0xbb, 0xe9,
0xf7, 0xcf, 0x6b, 0x61, 0xd2, 0x7a, 0x27, 0x27, 0xe7, 0x5f, 0x72, 0x3a, 0x93, 0x99, 0x3c, 0x9d,
0xe8, 0x39, 0x73, 0x84, 0x45, 0x61, 0x01, 0x2e, 0xc9, 0xb6, 0x55, 0xd9, 0x7d, 0x93, 0xe4, 0x2f,
0x54, 0x7a, 0x1b, 0xcf, 0x51, 0xd5, 0x92, 0xaf, 0xb1, 0x7e, 0x73, 0xb4, 0xc4, 0xe6, 0xdb, 0xca,
0x22, 0xba, 0x8d, 0x48, 0x93, 0xa6, 0xbf, 0x06, 0xcc, 0xba, 0xfa, 0xfb, 0xee, 0xc9, 0x3f, 0x01,
0x00, 0x00, 0xff, 0xff, 0x53, 0xa1, 0x8b, 0xe4, 0xf1, 0x09, 0x00, 0x00,
// 1070 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0xd1, 0x8e, 0xdb, 0x44,
0x17, 0xd6, 0xc4, 0x76, 0x12, 0x9f, 0x6c, 0xf7, 0xff, 0x35, 0xaa, 0xa8, 0x29, 0x37, 0xc1, 0x02,
0x29, 0x48, 0x74, 0x41, 0xad, 0x90, 0x10, 0x77, 0xd9, 0x0d, 0xaa, 0x96, 0xdd, 0xb6, 0xcb, 0x64,
0x77, 0xb9, 0x42, 0xd5, 0xc4, 0x39, 0x49, 0xac, 0x3a, 0xb1, 0x19, 0xdb, 0xbb, 0x31, 0x4f, 0xc1,
0x13, 0x20, 0x21, 0x71, 0xc5, 0x05, 0x17, 0xbc, 0x00, 0xf7, 0x7d, 0x2a, 0x74, 0x66, 0xc6, 0x8e,
0x43, 0x97, 0xaa, 0x37, 0x70, 0x37, 0xdf, 0x39, 0x93, 0x33, 0x33, 0xe7, 0x3b, 0xdf, 0x17, 0xc3,
0x61, 0xbc, 0x29, 0x50, 0x6d, 0x64, 0x72, 0x94, 0xa9, 0xb4, 0x48, 0x79, 0xbf, 0xc6, 0xe1, 0xef,
0x1d, 0xe8, 0x4e, 0xd3, 0x52, 0x45, 0xc8, 0x0f, 0xa1, 0x73, 0x3a, 0x09, 0xd8, 0x90, 0x8d, 0x1c,
0xd1, 0x39, 0x9d, 0x70, 0x0e, 0xee, 0x73, 0xb9, 0xc6, 0xa0, 0x33, 0x64, 0x23, 0x5f, 0xe8, 0x35,
0xc5, 0x2e, 0xab, 0x0c, 0x03, 0xc7, 0xc4, 0x68, 0xcd, 0x1f, 0x42, 0xff, 0x2a, 0xa7, 0x6a, 0x6b,
0x0c, 0x5c, 0x1d, 0x6f, 0x30, 0xe5, 0x2e, 0x64, 0x9e, 0xdf, 0xa6, 0x6a, 0x1e, 0x78, 0x26, 0x57,
0x63, 0xfe, 0x7f, 0x70, 0xae, 0xc4, 0x79, 0xd0, 0xd5, 0x61, 0x5a, 0xf2, 0x00, 0x7a, 0x13, 0x5c,
0xc8, 0x32, 0x29, 0x82, 0xde, 0x90, 0x8d, 0xfa, 0xa2, 0x86, 0x54, 0xe7, 0x12, 0x13, 0x5c, 0x2a,
0xb9, 0x08, 0xfa, 0xa6, 0x4e, 0x8d, 0xf9, 0x11, 0xf0, 0xd3, 0x4d, 0x8e, 0x51, 0xa9, 0x70, 0xfa,
0x2a, 0xce, 0xae, 0x51, 0xc5, 0x8b, 0x2a, 0xf0, 0x75, 0x81, 0x3b, 0x32, 0x74, 0xca, 0x33, 0x2c,
0x24, 0x9d, 0x0d, 0xba, 0x54, 0x0d, 0x79, 0x08, 0x07, 0xd3, 0x95, 0x54, 0x38, 0x9f, 0x62, 0xa4,
0xb0, 0x08, 0x06, 0x3a, 0xbd, 0x17, 0x0b, 0x7f, 0x62, 0xe0, 0x4f, 0x64, 0xbe, 0x9a, 0xa5, 0x52,
0xcd, 0xdf, 0xa9, 0x67, 0x8f, 0xc0, 0x8b, 0x30, 0x49, 0xf2, 0xc0, 0x19, 0x3a, 0xa3, 0xc1, 0xe3,
0x07, 0x47, 0x0d, 0x19, 0x4d, 0x9d, 0x13, 0x4c, 0x12, 0x61, 0x76, 0xf1, 0xcf, 0xc1, 0x2f, 0x70,
0x9d, 0x25, 0xb2, 0xc0, 0x3c, 0x70, 0xf5, 0x4f, 0xf8, 0xee, 0x27, 0x97, 0x36, 0x25, 0x76, 0x9b,
0xc2, 0xdf, 0x3a, 0x70, 0x6f, 0xaf, 0x14, 0x3f, 0x00, 0xb6, 0xd5, 0xb7, 0xf2, 0x04, 0xdb, 0x12,
0xaa, 0xf4, 0x8d, 0x3c, 0xc1, 0x2a, 0x42, 0xb7, 0x9a, 0x3f, 0x4f, 0xb0, 0x5b, 0x42, 0x2b, 0xcd,
0x9a, 0x27, 0xd8, 0x8a, 0x7f, 0x02, 0xbd, 0x1f, 0x4a, 0x54, 0x31, 0xe6, 0x81, 0xa7, 0x4f, 0xfe,
0xdf, 0xee, 0xe4, 0x6f, 0x4b, 0x54, 0x95, 0xa8, 0xf3, 0xf4, 0x52, 0xcd, 0xb8, 0xa1, 0x4f, 0xaf,
0x29, 0x56, 0xd0, 0x74, 0xf4, 0x4c, 0x8c, 0xd6, 0xb6, 0x43, 0x86, 0x33, 0xea, 0xd0, 0x17, 0xe0,
0xca, 0x2d, 0xe6, 0x81, 0xaf, 0xeb, 0x7f, 0xf8, 0x0f, 0xcd, 0x38, 0x1a, 0x6f, 0x31, 0xff, 0x7a,
0x53, 0xa8, 0x4a, 0xe8, 0xed, 0x0f, 0x9f, 0x82, 0xdf, 0x84, 0x68, 0x72, 0x5e, 0x61, 0xa5, 0x1f,
0xe8, 0x0b, 0x5a, 0xf2, 0x8f, 0xc0, 0xbb, 0x91, 0x49, 0x69, 0x1a, 0x3f, 0x78, 0x7c, 0xb8, 0x2b,
0x3b, 0xde, 0xc6, 0xb9, 0x30, 0xc9, 0xaf, 0x3a, 0x5f, 0xb2, 0xf0, 0x0f, 0x06, 0x2e, 0xc5, 0x88,
0xec, 0x04, 0x97, 0x32, 0xaa, 0x8e, 0xd3, 0x72, 0x33, 0xcf, 0x03, 0x36, 0x74, 0x46, 0x8e, 0xd8,
0x8b, 0xf1, 0xf7, 0xa0, 0x3b, 0x33, 0xd9, 0xce, 0xd0, 0x19, 0xf9, 0xc2, 0x22, 0x7e, 0x1f, 0xbc,
0x44, 0xce, 0x30, 0xb1, 0x3a, 0x30, 0x80, 0x76, 0x67, 0x0a, 0x17, 0xf1, 0xd6, 0xca, 0xc0, 0x22,
0x8a, 0xe7, 0xe5, 0x82, 0xe2, 0x46, 0x02, 0x16, 0x51, 0xbb, 0x66, 0x32, 0x6f, 0x5a, 0x48, 0x6b,
0xaa, 0x9c, 0x47, 0x32, 0xa9, 0x7b, 0x68, 0x40, 0xf8, 0x27, 0xa3, 0xf9, 0x37, 0x7c, 0xb7, 0x66,
0xce, 0x74, 0xf4, 0x7d, 0xe8, 0xd3, 0x2c, 0xbc, 0xbc, 0x91, 0xca, 0xce, 0x5d, 0x8f, 0xf0, 0xb5,
0x54, 0xfc, 0x33, 0xe8, 0xea, 0x97, 0xdf, 0x31, 0x7b, 0x75, 0xb9, 0x6b, 0xca, 0x0b, 0xbb, 0xad,
0x61, 0xd0, 0x6d, 0x31, 0xd8, 0x3c, 0xd6, 0x6b, 0x3f, 0xf6, 0x11, 0x78, 0x34, 0x0a, 0x95, 0xbe,
0xfd, 0x9d, 0x95, 0xcd, 0xc0, 0x98, 0x5d, 0xe1, 0x15, 0xdc, 0xdb, 0x3b, 0xb1, 0x39, 0x89, 0xed,
0x9f, 0xb4, 0x63, 0xd1, 0xb7, 0xac, 0x91, 0xf6, 0x73, 0x4c, 0x30, 0x2a, 0x70, 0xae, 0xfb, 0xdd,
0x17, 0x0d, 0x0e, 0x7f, 0x61, 0xbb, 0xba, 0xfa, 0x3c, 0x52, 0x77, 0x94, 0xae, 0xd7, 0x72, 0x33,
0xb7, 0xa5, 0x6b, 0x48, 0x7d, 0x9b, 0xcf, 0x6c, 0xe9, 0xce, 0x7c, 0x46, 0x58, 0x65, 0x96, 0xc1,
0x8e, 0xca, 0xf8, 0x10, 0x06, 0x6b, 0x94, 0x79, 0xa9, 0x70, 0x8d, 0x9b, 0xc2, 0xb6, 0xa0, 0x1d,
0xe2, 0x0f, 0xa0, 0x57, 0xc8, 0xe5, 0x4b, 0x9a, 0x3d, 0xcb, 0x64, 0x21, 0x97, 0x67, 0x58, 0xf1,
0x0f, 0xc0, 0x5f, 0xc4, 0x98, 0xcc, 0x75, 0xca, 0xd0, 0xd9, 0xd7, 0x81, 0x33, 0xac, 0xc2, 0x5f,
0x19, 0x74, 0xa7, 0xa8, 0x6e, 0x50, 0xbd, 0x93, 0x5d, 0xb4, 0xed, 0xd4, 0x79, 0x8b, 0x9d, 0xba,
0x77, 0xdb, 0xa9, 0xb7, 0xb3, 0xd3, 0xfb, 0xe0, 0x4d, 0x55, 0x74, 0x3a, 0xd1, 0x37, 0x72, 0x84,
0x01, 0x34, 0x8d, 0xe3, 0xa8, 0x88, 0x6f, 0xd0, 0x7a, 0xac, 0x45, 0xe1, 0xcf, 0x0c, 0xba, 0xe7,
0xb2, 0x4a, 0xcb, 0xe2, 0x8d, 0x09, 0x1b, 0xc2, 0x60, 0x9c, 0x65, 0x49, 0x1c, 0xc9, 0x22, 0x4e,
0x37, 0xf6, 0xb6, 0xed, 0x10, 0xed, 0x78, 0xd6, 0xea, 0x9d, 0xb9, 0x77, 0x3b, 0x44, 0x0a, 0x3d,
0xd1, 0x2e, 0x68, 0x2c, 0xad, 0xa5, 0x50, 0x63, 0x7e, 0x3a, 0x49, 0x0f, 0x1c, 0x97, 0x45, 0xba,
0x48, 0xd2, 0x5b, 0xfd, 0x92, 0xbe, 0x68, 0x70, 0xf8, 0xba, 0x03, 0xee, 0x7f, 0xe5, 0x6e, 0x07,
0xc0, 0x62, 0x4b, 0x24, 0x8b, 0x1b, 0xaf, 0xeb, 0xb5, 0xbc, 0x2e, 0x80, 0x5e, 0xa5, 0xe4, 0x66,
0x89, 0x79, 0xd0, 0xd7, 0xce, 0x51, 0x43, 0x9d, 0xd1, 0x1a, 0x31, 0x26, 0xe7, 0x8b, 0x1a, 0x36,
0x33, 0x0f, 0xad, 0x99, 0xff, 0xd4, 0xfa, 0xe1, 0x40, 0xdf, 0x28, 0xd8, 0x6f, 0xcb, 0xbf, 0x67,
0x83, 0xaf, 0x19, 0x78, 0x8d, 0x60, 0x4e, 0xf6, 0x05, 0x73, 0xb2, 0x13, 0xcc, 0xe4, 0xb8, 0x16,
0xcc, 0xe4, 0x98, 0xb0, 0xb8, 0xa8, 0x05, 0x23, 0x2e, 0x88, 0xac, 0xa7, 0x2a, 0x2d, 0xb3, 0xe3,
0xca, 0xb0, 0xea, 0x8b, 0x06, 0xd3, 0x94, 0x7d, 0xb7, 0x42, 0x65, 0x5b, 0xed, 0x0b, 0x8b, 0x68,
0x26, 0xcf, 0xb5, 0x99, 0x98, 0xe6, 0x1a, 0xc0, 0x3f, 0x06, 0x4f, 0x50, 0xf3, 0x74, 0x87, 0xf7,
0x78, 0xd1, 0x61, 0x61, 0xb2, 0x54, 0xd4, 0x7c, 0xab, 0xd8, 0xff, 0x13, 0x8b, 0xc2, 0x27, 0xf6,
0xe7, 0x54, 0xfd, 0x2a, 0xcb, 0x50, 0x59, 0x89, 0x19, 0xa0, 0xcf, 0x4c, 0x6f, 0xd1, 0xb8, 0xa3,
0x23, 0x0c, 0x08, 0xbf, 0x07, 0x7f, 0x9c, 0xa0, 0x2a, 0x44, 0x99, 0xbc, 0xe9, 0xa9, 0x1c, 0xdc,
0x6f, 0xa6, 0x2f, 0x9e, 0xd7, 0xc2, 0xa4, 0xf5, 0x4e, 0x4e, 0xce, 0xdf, 0xe4, 0x74, 0x26, 0x33,
0x79, 0x3a, 0xd1, 0x73, 0xe6, 0x08, 0x8b, 0xc2, 0x02, 0x5c, 0x92, 0x6d, 0xab, 0xb2, 0xfb, 0x36,
0xc9, 0x5f, 0xa8, 0xf4, 0x26, 0x9e, 0xa3, 0xaa, 0x25, 0x5f, 0x63, 0xfd, 0xe6, 0x68, 0x85, 0xcd,
0xb7, 0x95, 0x45, 0x74, 0x1b, 0x91, 0x26, 0x4d, 0x7f, 0x0d, 0x08, 0x43, 0x38, 0x78, 0xa1, 0x96,
0x72, 0x13, 0xff, 0x68, 0x74, 0x59, 0x9f, 0xc6, 0x76, 0xa7, 0xcd, 0xba, 0xfa, 0x1b, 0xf0, 0xc9,
0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x97, 0x53, 0x8f, 0x15, 0x0a, 0x00, 0x00,
}

View File

@ -131,6 +131,10 @@ message User {
repeated string Roles = 5; // Roles is list of roles a user has
}
message Organization {
string Name = 1; // Name is the organization's name
}
// The following is a vim modeline, it autoconfigures vim to have the
// appropriate tabbing and whitespace management to edit this file
//

89
bolt/organizations.go Normal file
View File

@ -0,0 +1,89 @@
package bolt
import (
"context"
"github.com/boltdb/bolt"
"github.com/influxdata/chronograf"
"github.com/influxdata/chronograf/bolt/internal"
)
// Ensure OrganizationsStore implements chronograf.OrganizationsStore.
var _ chronograf.OrganizationsStore = &OrganizationsStore{}
// OrganizationsStore is used to store organizations local to chronograf
var OrganizationsBucket = []byte("OrganizationsV1")
// OrganizationsStore uses bolt to store and retrieve Organizations
type OrganizationsStore struct {
client *Client
}
func (s *OrganizationsStore) Add(ctx context.Context, o *chronograf.Organization) (*chronograf.Organization, error) {
if err := s.client.db.Update(func(tx *bolt.Tx) error {
b := tx.Bucket(OrganizationsBucket)
seq, err := b.NextSequence()
if err != nil {
return err
}
if v, err := internal.MarshalOrganization(o); err != nil {
return err
} else if err := b.Put(u64tob(seq), v); err != nil {
return err
}
return nil
}); err != nil {
return nil, err
}
return o, nil
}
func (s *OrganizationsStore) All(context.Context) ([]chronograf.Organization, error) {
panic("not implemented")
}
func (s *OrganizationsStore) Delete(context.Context, *chronograf.Organization) error {
panic("not implemented")
}
func (s *OrganizationsStore) each(ctx context.Context, fn func(*chronograf.Organization)) error {
return s.client.db.View(func(tx *bolt.Tx) error {
return tx.Bucket(OrganizationsBucket).ForEach(func(k, v []byte) error {
var org chronograf.Organization
if err := internal.UnmarshalOrganization(v, &org); err != nil {
return err
}
fn(&org)
return nil
})
})
return nil
}
func (s *OrganizationsStore) Get(ctx context.Context, name string) (*chronograf.Organization, error) {
var org *chronograf.Organization
err := s.each(ctx, func(o *chronograf.Organization) {
if org != nil {
return
}
if o.Name == name {
org = o
}
})
if err != nil {
return nil, err
}
if org == nil {
return nil, chronograf.ErrOrganizationNotFound
}
return org, nil
}
func (s *OrganizationsStore) Update(context.Context, *chronograf.Organization) error {
panic("not implemented")
}

View File

@ -0,0 +1,81 @@
package bolt_test
import (
"context"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/influxdata/chronograf"
)
var orgCMPOptions = cmp.Options{
cmpopts.EquateEmpty(),
}
func TestOrganizationsStore_Get(t *testing.T) {
type args struct {
ctx context.Context
org *chronograf.Organization
}
tests := []struct {
name string
args args
want *chronograf.Organization
wantErr bool
addFirst bool
}{
{
name: "Organization not found",
args: args{
ctx: context.Background(),
org: &chronograf.Organization{},
},
wantErr: true,
},
{
name: "Get Organization",
args: args{
ctx: context.Background(),
org: &chronograf.Organization{
Name: "EE - Evil Empire",
},
},
want: &chronograf.Organization{
Name: "EE - Evil Empire",
},
addFirst: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
client, err := NewTestClient()
if err != nil {
t.Fatal(err)
}
if err := client.Open(context.TODO()); err != nil {
t.Fatal(err)
}
defer client.Close()
s := client.OrganizationsStore
if tt.addFirst {
tt.args.org, err = s.Add(tt.args.ctx, tt.args.org)
if err != nil {
t.Fatal(err)
}
}
got, err := s.Get(tt.args.ctx, tt.args.org.Name)
if (err != nil) != tt.wantErr {
t.Errorf("%q. OrganizationsStore.Get() error = %v, wantErr %v", tt.name, err, tt.wantErr)
return
}
if diff := cmp.Diff(got, tt.want, orgCMPOptions...); diff != "" {
t.Errorf("%q. OrganizationsStore.Get():\n-got/+want\ndiff %s", tt.name, diff)
}
})
}
}