211 lines
6.9 KiB
Go
211 lines
6.9 KiB
Go
package client
|
|
|
|
//// TrackContainers This struct stores arrays of current containers running
|
|
//type TrackContainers struct {
|
|
// TrackContainerList []TrackContainer `json:"TrackContainer"`
|
|
//}
|
|
//
|
|
//// TrackContainer Stores information of current containers
|
|
//type TrackContainer struct {
|
|
// Id string `json:"ID"`
|
|
// Container *docker.DockerVM `json:"Container"`
|
|
// IpAddress string `json:"IpAddress"`
|
|
//}
|
|
//
|
|
//// AddTrackContainer Adds new container which has been added to the track container
|
|
//func AddTrackContainer(d *docker.DockerVM, ipAddress string) error {
|
|
// // Checking if pointer d is null
|
|
// if d == nil {
|
|
// return errors.New("d is nil")
|
|
// }
|
|
// //Get config information to derive paths for track containers json file
|
|
// config, err := config.ConfigInit(nil, nil)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
//
|
|
// // Getting information about the file trackcontainers.json file
|
|
// stat, err := os.Stat(config.TrackContainersPath)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// // Initialize variable for TrackContainers
|
|
// var trackContainers TrackContainers
|
|
// // If the trackcontainers.json file is not empty then
|
|
// // Read from that file
|
|
// if stat.Size() != 0 {
|
|
// // Reads tracked container file
|
|
// trackContainersFile, err := ReadTrackContainers(config.TrackContainersPath)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// trackContainers = *trackContainersFile
|
|
// }
|
|
//
|
|
// // Initialize new variable with type struct TrackContainers and
|
|
// // add container struct and ip address
|
|
// var trackContainer TrackContainer
|
|
// trackContainer.Id = d.ID
|
|
// trackContainer.Container = d
|
|
// trackContainer.IpAddress = ipAddress
|
|
//
|
|
// // Adds new container as passed in the parameter to the struct
|
|
// if &trackContainer == nil {
|
|
// return errors.New("trackContainer variable is nil")
|
|
// }
|
|
// trackContainers.TrackContainerList = append(trackContainers.TrackContainerList, trackContainer)
|
|
//
|
|
// // write modified information to the tracked json file
|
|
// data, err := json.MarshalIndent(trackContainers, "", "\t")
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// err = ioutil.WriteFile(config.TrackContainersPath, data, 0777)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
//
|
|
// return nil
|
|
//}
|
|
//
|
|
//// RemoveTrackedContainer This function removos tracked container from the trackcontainer JSON file
|
|
//func RemoveTrackedContainer(id string) error {
|
|
// //Get config information to derive paths for track containers json file
|
|
// config, err := config.ConfigInit(nil, nil)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// // Getting tracked container struct
|
|
// trackedContainers, err := ReadTrackContainers(config.TrackContainersPath)
|
|
// // Storing index of element to remove
|
|
// var removeElement int
|
|
// removeElement = -1
|
|
// for i := range trackedContainers.TrackContainerList {
|
|
// if trackedContainers.TrackContainerList[i].Id == id {
|
|
// removeElement = i
|
|
// break
|
|
// }
|
|
// }
|
|
// // Checks if the element to be removed has been detected
|
|
// if removeElement == -1 {
|
|
// return errors.New("Container ID not found in the tracked list")
|
|
// }
|
|
// // Remove the detected element from the struct
|
|
// trackedContainers.TrackContainerList = append(trackedContainers.TrackContainerList[:removeElement], trackedContainers.TrackContainerList[removeElement+1:]...)
|
|
//
|
|
// // write modified information to the tracked json file
|
|
// data, err := json.MarshalIndent(trackedContainers, "", "\t")
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// err = ioutil.WriteFile(config.TrackContainersPath, data, 0777)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
//
|
|
// return nil
|
|
//}
|
|
//
|
|
//// ViewTrackedContainers View Containers currently tracked
|
|
//func ViewTrackedContainers() (error, *TrackContainers) {
|
|
// config, err := config.ConfigInit(nil, nil)
|
|
// if err != nil {
|
|
// return err, nil
|
|
// }
|
|
// trackedContianers, err := ReadTrackContainers(config.TrackContainersPath)
|
|
// if err != nil {
|
|
// return err, nil
|
|
// }
|
|
//
|
|
// return nil, trackedContianers
|
|
//}
|
|
//
|
|
//// ReadTrackContainers Reads containers which are currently tracked
|
|
//func ReadTrackContainers(filename string) (*TrackContainers, error) {
|
|
// buf, err := ioutil.ReadFile(filename)
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
//
|
|
// c := &TrackContainers{}
|
|
// err = json.Unmarshal(buf, c)
|
|
// if err != nil {
|
|
// return nil, fmt.Errorf("in file %q: %v", filename, err)
|
|
// }
|
|
//
|
|
// return c, nil
|
|
//}
|
|
//
|
|
////func ModifyTrackContainers()
|
|
//
|
|
//// GetContainerInformation gets information about container based on
|
|
//// container ID provided
|
|
//func GetContainerInformation(ID string) (*TrackContainer, error) {
|
|
// // Getting the current containers
|
|
// err, CurrentContainers := ViewTrackedContainers()
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
// // Iterating through all tracked containers to get the container information
|
|
// // of the ID passed through the function parameter
|
|
// for _, container := range CurrentContainers.TrackContainerList {
|
|
// if container.Container.ID == ID {
|
|
// return &container, nil
|
|
// }
|
|
// }
|
|
// return nil, errors.New("Container not found. ")
|
|
//}
|
|
//
|
|
//// ModifyContainerInformation Modifies information inside the container
|
|
//func (TC *TrackContainer) ModifyContainerInformation() error {
|
|
// // Gets all the information of tracker containers
|
|
// err, t := ViewTrackedContainers()
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// // Find the element where the containers match and
|
|
// // change them
|
|
// for i, container := range t.TrackContainerList {
|
|
// if TC.Id == container.Id {
|
|
// t.TrackContainerList[i] = *TC
|
|
// break
|
|
// }
|
|
// }
|
|
// // Write the modified information to the file
|
|
// // write modified information to the tracked json file
|
|
// err = t.WriteContainers()
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
//
|
|
// return nil
|
|
//}
|
|
//
|
|
//// WriteContainers Write information back to the config file
|
|
//func (TC *TrackContainers) WriteContainers() error {
|
|
// // Initialize config file
|
|
// config, err := config.ConfigInit(nil, nil)
|
|
// // write modified information to the tracked json file
|
|
// data, err := json.MarshalIndent(TC, "", "\t")
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// err = ioutil.WriteFile(config.TrackContainersPath, data, 0777)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
//
|
|
// return nil
|
|
//}
|
|
//
|
|
//// CheckID Checks if the ID belongs to a group or a single container
|
|
//func CheckID(ID string) (string, error) {
|
|
// // For group checks if the 1st characters is "grp"
|
|
// if ID[0:3] == "grp" {
|
|
// return "group", nil
|
|
// } else {
|
|
// return "container", nil
|
|
// }
|
|
// return "", nil
|
|
//}
|