diff --git a/internal/api/object/addresses.go b/internal/api/object/addresses.go index 1bac053..0cdad24 100644 --- a/internal/api/object/addresses.go +++ b/internal/api/object/addresses.go @@ -2,6 +2,7 @@ package object import ( "context" + "fmt" "nfsense.net/nfsense/internal/definitions" ) @@ -15,3 +16,47 @@ func (f *Object) GetAddresses(ctx context.Context, params struct{}) (GetAddresse Addresses: f.Conf.Object.Addresses, }, nil } + +type CreateAddressParameters struct { + Name string + Address definitions.Address +} + +func (f *Object) CreateAddress(ctx context.Context, params CreateAddressParameters) (struct{}, error) { + _, ok := f.Conf.Object.Addresses[params.Name] + if ok { + return struct{}{}, fmt.Errorf("Address already Exists") + } + + f.Conf.Object.Addresses[params.Name] = params.Address + return struct{}{}, nil +} + +type UpdateAddressParameters struct { + Name string + Address definitions.Address +} + +func (f *Object) UpdateAddress(ctx context.Context, params CreateAddressParameters) (struct{}, error) { + _, ok := f.Conf.Object.Addresses[params.Name] + if !ok { + return struct{}{}, fmt.Errorf("Address does not Exist") + } + + f.Conf.Object.Addresses[params.Name] = params.Address + return struct{}{}, nil +} + +type DeleteAddressParameters struct { + Name string +} + +func (f *Object) DeleteAddress(ctx context.Context, params DeleteAddressParameters) (struct{}, error) { + _, ok := f.Conf.Object.Addresses[params.Name] + if !ok { + return struct{}{}, fmt.Errorf("Interface does not Exist") + } + + delete(f.Conf.Object.Addresses, params.Name) + return struct{}{}, nil +} diff --git a/internal/api/object/services.go b/internal/api/object/services.go index 8721c06..f909d72 100644 --- a/internal/api/object/services.go +++ b/internal/api/object/services.go @@ -2,6 +2,7 @@ package object import ( "context" + "fmt" "nfsense.net/nfsense/internal/definitions" ) @@ -15,3 +16,47 @@ func (f *Object) GetServices(ctx context.Context, params struct{}) (GetServicesR Services: f.Conf.Object.Services, }, nil } + +type CreateServiceParameters struct { + Name string + Service definitions.Service +} + +func (f *Object) CreateService(ctx context.Context, params CreateServiceParameters) (struct{}, error) { + _, ok := f.Conf.Object.Services[params.Name] + if ok { + return struct{}{}, fmt.Errorf("Service already Exists") + } + + f.Conf.Object.Services[params.Name] = params.Service + return struct{}{}, nil +} + +type UpdateServiceParameters struct { + Name string + Service definitions.Service +} + +func (f *Object) UpdateService(ctx context.Context, params CreateServiceParameters) (struct{}, error) { + _, ok := f.Conf.Object.Services[params.Name] + if !ok { + return struct{}{}, fmt.Errorf("Service does not Exist") + } + + f.Conf.Object.Services[params.Name] = params.Service + return struct{}{}, nil +} + +type DeleteServiceParameters struct { + Name string +} + +func (f *Object) DeleteService(ctx context.Context, params DeleteServiceParameters) (struct{}, error) { + _, ok := f.Conf.Object.Services[params.Name] + if !ok { + return struct{}{}, fmt.Errorf("Interface does not Exist") + } + + delete(f.Conf.Object.Services, params.Name) + return struct{}{}, nil +}