Skip to content
Snippets Groups Projects
subManagement.go 2.27 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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)
    }