pkg/infrastructure/authorizationCheckers/terraform/fileManager.go (82 lines of code) (raw):

// MIT License // // Copyright (c) Microsoft Corporation. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE package terraform import ( "encoding/json" "io" "os" "github.com/Azure/mpf/pkg/domain" log "github.com/sirupsen/logrus" ) func DoesTFFileExist(workingDir string, fileName string) bool { filePath := workingDir + "/" + fileName if _, err := os.Stat(filePath); err == nil { log.Infof("%s file exists \n", filePath) return true } log.Infof("%s file does not exist \n", filePath) return false } func CreateTFFile(workingDir string, fileName string) error { filePath := workingDir + "/" + fileName if _, err := os.Stat(filePath); err == nil { log.Infof("%s file already exists \n", filePath) return nil } _, err := os.Create(filePath) if err != nil { log.Warnf("error creating %s file: %s", filePath, err) return err } log.Infof("%s created file \n", filePath) return nil } func DeleteTFFile(workingDir string, fileName string) error { filePath := workingDir + "/" + fileName if _, err := os.Stat(filePath); err != nil { log.Infof("%s file does not exist \n", filePath) return nil } err := os.Remove(filePath) if err != nil { log.Warnf("error deleting %s file: %s", filePath, err) return err } log.Infof("%s deleted file \n", filePath) return nil } func doesEnteredDestroyPhaseStateFileExist(workingDir string, fileName string) bool { return DoesTFFileExist(workingDir, fileName) } func createEnteredDestroyPhaseStateFile(workingDir string, fileName string) error { return CreateTFFile(workingDir, fileName) } func deleteEnteredDestroyPhaseStateFile(workingDir string, fileName string) error { return DeleteTFFile(workingDir, fileName) } func saveResultAsJSON(rw io.ReadWriter, mpfResult domain.MPFResult) error { // serialize mpfREsult to json return json.NewEncoder(rw).Encode(mpfResult) } func loadResultFromJSON(r io.Reader) (*domain.MPFResult, error) { // deserialize json to mpfResult var mpfResult domain.MPFResult err := json.NewDecoder(r).Decode(&mpfResult) return &mpfResult, err } func LoadMPFResultFromFile(workingDir string, filename string) (*domain.MPFResult, error) { filePath := workingDir + "/" + filename file, err := os.Open(filePath) if err != nil { log.Warnf("error opening file for found permissions from failed run: %s", err) return nil, err } defer file.Close() return loadResultFromJSON(file) } // called for failed runs to save permissions to a file func SaveMPFResultsToFile(workingDir string, filename string, mpfResult domain.MPFResult) error { filePath := workingDir + "/" + filename file, err := os.Create(filePath) if err != nil { log.Warnf("error creating file for found permissions from failed run: %s", err) return err } defer file.Close() return saveResultAsJSON(file, mpfResult) }