Skip to content
Snippets Groups Projects

Enable export and import of SDN configuration

Merged Ghost User requested to merge export-import-sdn-config into develop
2 files
+ 92
21
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -49,7 +49,6 @@ func NewVenvManager(dialConnectionURL string, dialOption grpc.DialOption, yamlFi
@@ -49,7 +49,6 @@ func NewVenvManager(dialConnectionURL string, dialOption grpc.DialOption, yamlFi
func (v *VenvManager) createConnection() (*grpc.ClientConn, error) {
func (v *VenvManager) createConnection() (*grpc.ClientConn, error) {
conn, err := grpc.Dial(v.dialConnectionURL, v.dialOption)
conn, err := grpc.Dial(v.dialConnectionURL, v.dialOption)
if err != nil {
if err != nil {
return nil, err
return nil, err
}
}
@@ -59,12 +58,54 @@ func (v *VenvManager) createConnection() (*grpc.ClientConn, error) {
@@ -59,12 +58,54 @@ func (v *VenvManager) createConnection() (*grpc.ClientConn, error) {
func (v *VenvManager) closeConnection(conn *grpc.ClientConn) {
func (v *VenvManager) closeConnection(conn *grpc.ClientConn) {
err := conn.Close()
err := conn.Close()
if err != nil {
if err != nil {
fmt.Println(err)
fmt.Println(err)
}
}
}
}
 
// ReadAndSendSDNConfig gets the SDN config data and sends it to the controller.
 
func (v *VenvManager) ReadAndSendSDNConfig() error {
 
sdnConfigData, err := v.readSDNConfigFile()
 
if err != nil {
 
return err
 
}
 
 
err = v.sendSDNConfigData(&sdnConfigData)
 
if err != nil {
 
return err
 
}
 
 
return nil
 
}
 
 
// getSDNConfigData gets the sDN configuration data.
 
func (v *VenvManager) sendSDNConfigData(sdnConfigData *string) error {
 
conn, err := v.createConnection()
 
if err != nil {
 
return err
 
}
 
defer v.closeConnection(conn)
 
 
ctx := context.Background()
 
 
//get PND, might remove later because we won't support PND in the future and it gets infored everywhere
 
coreService := corePb.NewCoreServiceClient(conn)
 
pndRes, err := coreService.GetPndList(ctx, &corePb.GetPndListRequest{Timestamp: getTimestamp()})
 
if err != nil {
 
return err
 
}
 
v.pnd = pndRes.Pnd[0].Id
 
 
configMgmtService := configMgmtPb.NewConfigurationManagementServiceClient(conn)
 
 
_, err = configMgmtService.ImportSDNConfig(ctx, &configMgmtPb.ImportSDNConfigRequest{Timestamp: getTimestamp(), Pid: v.pnd, SdnConfigData: *sdnConfigData})
 
if err != nil {
 
return err
 
}
 
 
return nil
 
}
 
// CreateSDNConfigFile creates the SDN configuration file.
// CreateSDNConfigFile creates the SDN configuration file.
func (v *VenvManager) CreateSDNConfigFile() error {
func (v *VenvManager) CreateSDNConfigFile() error {
sdnConfigReponse, err := v.getSDNConfigData()
sdnConfigReponse, err := v.getSDNConfigData()
@@ -72,7 +113,7 @@ func (v *VenvManager) CreateSDNConfigFile() error {
@@ -72,7 +113,7 @@ func (v *VenvManager) CreateSDNConfigFile() error {
return err
return err
}
}
err = v.writeSDNConfigToFile(*sdnConfigReponse)
err = v.writeSDNConfigFile(*sdnConfigReponse)
if err != nil {
if err != nil {
return err
return err
}
}
@@ -105,11 +146,11 @@ func (v *VenvManager) getSDNConfigData() (*string, error) {
@@ -105,11 +146,11 @@ func (v *VenvManager) getSDNConfigData() (*string, error) {
return nil, err
return nil, err
}
}
return &sdnConfigResponse.SdnConfig, nil
return &sdnConfigResponse.SdnConfigData, nil
}
}
// writeSDNConfigToFile wriets the SDN configuration in a string to a file.
// writeSDNConfigFile writes the SDN configuration in a string to a file.
func (v *VenvManager) writeSDNConfigToFile(sdnConfigToWrite string) error {
func (v *VenvManager) writeSDNConfigFile(sdnConfigToWrite string) error {
err := os.WriteFile(v.sdnConfigFilepath, []byte(sdnConfigToWrite), 0644)
err := os.WriteFile(v.sdnConfigFilepath, []byte(sdnConfigToWrite), 0644)
if err != nil {
if err != nil {
return err
return err
@@ -118,6 +159,16 @@ func (v *VenvManager) writeSDNConfigToFile(sdnConfigToWrite string) error {
@@ -118,6 +159,16 @@ func (v *VenvManager) writeSDNConfigToFile(sdnConfigToWrite string) error {
return nil
return nil
}
}
 
// readSDNConfigToFile reads the SDN configuration from a file to a string.
 
func (v *VenvManager) readSDNConfigFile() (string, error) {
 
content, err := os.ReadFile(v.sdnConfigFilepath)
 
if err != nil {
 
return "", err
 
}
 
 
return string(content), nil
 
}
 
// CreateTopologyFile creates the topology file.
// CreateTopologyFile creates the topology file.
func (v *VenvManager) CreateTopologyFile() error {
func (v *VenvManager) CreateTopologyFile() error {
topologyData, err := v.getTopologyData()
topologyData, err := v.getTopologyData()
Loading