package api

import (
	"context"
	"time"

	cpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/configurationmanagement"
	nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client"
)

// ExportSDNConfig returns the SDN configuration.
func ExportSDNConfig(ctx context.Context, addr, pid string) (*cpb.ExportSDNConfigResponse, error) {
	configClient, err := nbi.ConfigurationManagementClient(addr, dialOptions...)
	if err != nil {
		return nil, err
	}

	req := &cpb.ExportSDNConfigRequest{
		Timestamp: time.Now().UnixNano(),
		Pid:       pid,
	}
	return configClient.ExportSDNConfig(ctx, req)
}

// ImportSDNConfig receives an SDN configuration and imports it.
func ImportSDNConfig(ctx context.Context, addr, pid, sdnConfigData string) (*cpb.ImportSDNConfigResponse, error) {
	configClient, err := nbi.ConfigurationManagementClient(addr, dialOptions...)
	if err != nil {
		return nil, err
	}

	req := &cpb.ImportSDNConfigRequest{
		Timestamp:     time.Now().UnixNano(),
		Pid:           pid,
		SdnConfigData: sdnConfigData,
	}
	return configClient.ImportSDNConfig(ctx, req)
}