Commit 243dc199 authored by Kevin Di Lallo's avatar Kevin Di Lallo
Browse files

gis-engine uninit

parent d3da6f4e
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ func main() {
		// Initialize GIS Engine
		err := server.Init()
		if err != nil {
			log.Error("Failed to initialize Monitoring Engine")
			log.Error("Failed to initialize GIS Engine")
			run = false
			return
		}
@@ -60,7 +60,7 @@ func main() {
		// Start GIS Engine Event Handler thread
		err = server.Run()
		if err != nil {
			log.Error("Failed to start Monitoring Engine")
			log.Error("Failed to start GIS Engine")
			run = false
			return
		}
@@ -82,4 +82,11 @@ func main() {
		time.Sleep(time.Second)
		count++
	}

	// Uninitialize GIS Engine
	err := server.Uninit()
	if err != nil {
		log.Error("Failed to uninitialize GIS Engine")
		return
	}
}
+31 −0
Original line number Diff line number Diff line
@@ -189,6 +189,37 @@ func Init() (err error) {
	return nil
}

// Uninit - GIS Engine initialization
func Uninit() (err error) {

	if ge == nil {
		err = errors.New("GIS Engine not initialized")
		log.Error(err.Error())
		return err
	}

	// Deregister Message Queue handler
	if ge.mqLocal != nil {
		ge.mqLocal.UnregisterHandler(ge.handlerId)
	}

	// Delete GIS Asset Manager
	if ge.assetMgr != nil {
		err = ge.assetMgr.DeleteAssetMgr()
		if err != nil {
			log.Error(err.Error())
			return err
		}
	}

	// Flush GIS Cache
	if ge.gisCache != nil {
		ge.gisCache.Flush()
	}

	return nil
}

// Run - GIS Engine thread
func Run() (err error) {

+36 −2
Original line number Diff line number Diff line
@@ -139,6 +139,10 @@ type Compute struct {
type AssetMgr struct {
	name      string
	namespace string
	user      string
	pwd       string
	host      string
	port      string
	dbName    string
	db        *sql.DB
	connected bool
@@ -160,10 +164,14 @@ func NewAssetMgr(name, namespace, user, pwd, host, port string) (am *AssetMgr, e
	} else {
		am.namespace = "default"
	}
	am.user = user
	am.pwd = pwd
	am.host = host
	am.port = port

	// Connect to Postgis DB
	for retry := 0; retry <= DbMaxRetryCount; retry++ {
		am.db, err = am.connectDB("", user, pwd, host, port)
		am.db, err = am.connectDB("", am.user, am.pwd, am.host, am.port)
		if err == nil {
			break
		}
@@ -183,7 +191,7 @@ func NewAssetMgr(name, namespace, user, pwd, host, port string) (am *AssetMgr, e
	_ = am.CreateDb(am.dbName)

	// Close connection to postgis DB
	am.db.Close()
	_ = am.db.Close()

	// Connect with sandbox-specific DB
	am.db, err = am.connectDB(am.dbName, user, pwd, host, port)
@@ -241,6 +249,32 @@ func (am *AssetMgr) notifyListener(cbType string, assetName string) {
	}
}

// DeleteAssetMgr -
func (am *AssetMgr) DeleteAssetMgr() (err error) {

	if am.db == nil {
		err = errors.New("Asset Manager database not initialized")
		log.Error(err.Error())
		return err
	}

	// Close connection to sandbox-specific DB
	_ = am.db.Close()

	// Connect to Postgis DB
	am.db, err = am.connectDB("", am.user, am.pwd, am.host, am.port)
	if err != nil {
		log.Error("Failed to connect to postgis DB with err: ", err.Error())
		return err
	}
	defer am.db.Close()

	// Destroy sandbox database
	_ = am.DestroyDb(am.dbName)

	return nil
}

// CreateDb -- Create new DB with provided name
func (am *AssetMgr) CreateDb(name string) (err error) {
	_, err = am.db.Exec("CREATE DATABASE " + name)