package api import ( "context" "time" subpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/subscriptionmanagement" nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client" ) // ResetAllSubscriptions stops all running subscriptions and restarts them the same way they ran before. func ResetAllSubscriptions(ctx context.Context, addr string) (*subpb.ResetAllSubscriptionsResponse, error) { subClient, err := nbi.SubManagementClient(addr, dialOptions...) if err != nil { return nil, err } req := &subpb.ResetAllSubscriptionsRequest{ Timestamp: time.Now().UnixNano(), } return subClient.ResetAllSubscriptions(ctx, req) } // GetAll returns information about all running subscriptions. func GetAll(ctx context.Context, addr string) (*subpb.GetAllResponse, error) { subClient, err := nbi.SubManagementClient(addr, dialOptions...) if err != nil { return nil, err } req := &subpb.GetAllRequest{ Timestamp: time.Now().UnixNano(), } return subClient.GetAll(ctx, req) } // Get fetches detailed info for one specific available subscription. func Get(ctx context.Context, addr string, subID string) (*subpb.GetResponse, error) { subClient, err := nbi.SubManagementClient(addr, dialOptions...) if err != nil { return nil, err } req := &subpb.GetRequest{ Timestamp: time.Now().UnixNano(), Subid: subID, } return subClient.Get(ctx, req) } // Delete stops and removes one specific running subscription is a no-op if object connected to ID does not exist. func Delete(ctx context.Context, addr string, subID string) (*subpb.DeleteResponse, error) { subClient, err := nbi.SubManagementClient(addr, dialOptions...) if err != nil { return nil, err } req := &subpb.DeleteRequest{ Timestamp: time.Now().UnixNano(), Subid: subID, } return subClient.Delete(ctx, req) } // Add creates a new subscription for the network element matching the provided ID using the provided subscribe options. func Add(ctx context.Context, addr string, mneID string, subscribeOptions *subpb.Subscription) (*subpb.AddResponse, error) { subClient, err := nbi.SubManagementClient(addr, dialOptions...) if err != nil { return nil, err } req := &subpb.AddRequest{ Timestamp: time.Now().UnixNano(), Mneid: mneID, Subscription: subscribeOptions, } return subClient.Add(ctx, req) }