func ImportService(do *definitions.Do) error { fileName := filepath.Join(ServicesPath, do.Name) if filepath.Ext(fileName) == "" { fileName = fileName + ".toml" } var err error if log.GetLevel() > 0 { err = ipfs.GetFromIPFS(do.Hash, fileName, "", os.Stdout) } else { err = ipfs.GetFromIPFS(do.Hash, fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return err } _, err = loaders.LoadServiceDefinition(do.Name, false, 0) //XXX add protections? if err != nil { return fmt.Errorf("Your service definition file looks improperly formatted and will not marshal.") } do.Result = "success" return nil }
func pinFiles(csvfile string) (string, error) { var err error csvFile, err := os.Open(csvfile) if err != nil { return "", fmt.Errorf("error opening csv file: %v\n", err) } defer csvFile.Close() reader := csv.NewReader(csvFile) rawCSVdata, err := reader.ReadAll() if err != nil { return "", fmt.Errorf("error reading csv file: %v\n", err) } hashArray := make([]string, len(rawCSVdata)) for i, each := range rawCSVdata { if log.GetLevel() > 0 { hashArray[i], err = ipfs.PinToIPFS(each[0], os.Stdout) } else { hashArray[i], err = ipfs.PinToIPFS(each[0], bytes.NewBuffer([]byte{})) } if err != nil { return "", err } } hashes := strings.Join(hashArray, "\n") return hashes, nil }
func importFiles(csvfile, newdir string) error { var err error csvFile, err := os.Open(csvfile) if err != nil { return fmt.Errorf("error opening csv file: %v\n", err) } defer csvFile.Close() reader := csv.NewReader(csvFile) rawCSVdata, err := reader.ReadAll() if err != nil { return fmt.Errorf("error reading csv file: %v\n", err) } for _, each := range rawCSVdata { if log.GetLevel() > 0 { err = ipfs.GetFromIPFS(each[0], each[1], newdir, os.Stdout) } else { err = ipfs.GetFromIPFS(each[0], each[1], newdir, bytes.NewBuffer([]byte{})) } if err != nil { return err } } return nil }
func ImportChain(do *definitions.Do) error { fileName := filepath.Join(ChainsPath, do.Name) if filepath.Ext(fileName) == "" { fileName = fileName + ".toml" } s := strings.Split(do.Path, ":") if s[0] == "ipfs" { var err error if log.GetLevel() > 0 { err = ipfs.GetFromIPFS(s[1], fileName, "", os.Stdout) } else { err = ipfs.GetFromIPFS(s[1], fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return err } return nil } if strings.Contains(s[0], "github") { log.Warn("https://twitter.com/ryaneshea/status/595957712040628224") return nil } return fmt.Errorf("I do not know how to get that file. Sorry.") }
func rmPinnedByHash(hash string) (string, error) { var err error if log.GetLevel() > 0 { hash, err = ipfs.RemovePinnedFromIPFS(hash, os.Stdout) } else { hash, err = ipfs.RemovePinnedFromIPFS(hash, bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func listPinned() (string, error) { var hash string var err error if log.GetLevel() > 0 { hash, err = ipfs.ListPinnedFromIPFS(os.Stdout) } else { hash, err = ipfs.ListPinnedFromIPFS(bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func listFile(objectHash string) (string, error) { var hash string var err error if log.GetLevel() > 0 { hash, err = ipfs.ListFromIPFS(objectHash, os.Stdout) } else { hash, err = ipfs.ListFromIPFS(objectHash, bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func importFile(hash, fileName string) error { var err error if log.GetLevel() > 0 { err = ipfs.GetFromIPFS(hash, fileName, "", os.Stdout) } else { err = ipfs.GetFromIPFS(hash, fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return err } return nil }
func pinFile(fileHash string) (string, error) { var hash string var err error if log.GetLevel() > 0 { hash, err = ipfs.PinToIPFS(fileHash, os.Stdout) } else { hash, err = ipfs.PinToIPFS(fileHash, bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func exportFile(fileName, gateway string) (string, error) { var hash string var err error if log.GetLevel() > 0 { hash, err = ipfs.SendToIPFS(fileName, gateway, os.Stdout) } else { hash, err = ipfs.SendToIPFS(fileName, gateway, bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func exportFile(chainName string) (string, error) { fileName := util.GetFileByNameAndType("chains", chainName) var hash string var err error if log.GetLevel() > 0 { hash, err = ipfs.SendToIPFS(fileName, "", os.Stdout) } else { hash, err = ipfs.SendToIPFS(fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func ImportAction(do *definitions.Do) error { if do.Name == "" { do.Name = strings.Join(do.Operations.Args, "_") } fileName := filepath.Join(ActionsPath, strings.Join(do.Operations.Args, " ")) if filepath.Ext(fileName) == "" { fileName = fileName + ".toml" } s := strings.Split(do.Path, ":") if s[0] == "ipfs" { var err error //unset 1 as default ContainerNumber, let it take flag? ipfsService, err := loaders.LoadServiceDefinition("ipfs", false, 1) if err != nil { return err } ipfsService.Operations.ContainerType = definitions.TypeService err = perform.DockerRunService(ipfsService.Service, ipfsService.Operations) if err != nil { return err } if log.GetLevel() > 0 { err = ipfs.GetFromIPFS(s[1], fileName, "", os.Stdout) } else { err = ipfs.GetFromIPFS(s[1], fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return err } return nil } if strings.Contains(s[0], "github") { log.Warn("https://twitter.com/ryaneshea/status/595957712040628224") return nil } log.Warn("Failed to get that file. Sorry") return nil }
func exportFile(servName string) (string, error) { fileName := FindServiceDefinitionFile(servName) var hash string var err error if log.GetLevel() > 0 { hash, err = ipfs.SendToIPFS(fileName, "", os.Stdout) } else { hash, err = ipfs.SendToIPFS(fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func exportFile(actionName string) (string, error) { var err error fileName := util.GetFileByNameAndType("actions", actionName) if fileName == "" { return "", fmt.Errorf("no file to export") } var hash string if log.GetLevel() > 0 { hash, err = ipfs.SendToIPFS(fileName, "", os.Stdout) } else { hash, err = ipfs.SendToIPFS(fileName, "", bytes.NewBuffer([]byte{})) } if err != nil { return "", err } return hash, nil }
func exportDir(dirName, gateway string) (string, error) { var hashes string var err error files, err := ioutil.ReadDir(dirName) if err != nil { return "", fmt.Errorf("error reading directory %v\n", err) } gwd, err := os.Getwd() if err != nil { return "", fmt.Errorf("error getting working directory %v\n", err) } hashArray := make([]string, len(files)) fileNames := make([]string, len(files)) //the dir ends up in the loop & tries to post for i := range files { //hacky file := filepath.Join(gwd, dirName, files[i].Name()) if log.GetLevel() > 0 { hashArray[i], err = ipfs.SendToIPFS(file, gateway, os.Stdout) } else { hashArray[i], err = ipfs.SendToIPFS(file, gateway, bytes.NewBuffer([]byte{})) } if err != nil { return "", fmt.Errorf("error reading file %v\n", err) } fileNames[i] = files[i].Name() } err = writeCsv(hashArray, fileNames) if err != nil { return "", err } hashes = strings.Join(hashArray, "\n") return hashes, nil }
// DockerPull pulls the image for the container specified in srv.Image. // DockerPull returns Docker errors on exit if not successful. // // ops.SrvContainerName - service or a chain container name // ops.ContainerNumber - container number // ops.ContainerType - container type // ops.Labels - container creation time labels // // Also see container parameters for DockerRunService. func DockerPull(srv *def.Service, ops *def.Operation) error { log.WithFields(log.Fields{ "=>": srv.Name, "image": srv.Image, }).Info("Pulling container image for") var wasRunning bool = false if _, exists := ContainerExists(ops); exists { if _, running := ContainerRunning(ops); running { wasRunning = true if err := DockerStop(srv, ops, 10); err != nil { return err } } if err := removeContainer(ops.SrvContainerName, false, false); err != nil { return err } } if log.GetLevel() > 0 { if err := pullImage(srv.Image, os.Stdout); err != nil { return err } } else { if err := pullImage(srv.Image, bytes.NewBuffer([]byte{})); err != nil { return err } } if wasRunning { if err := DockerRunService(srv, ops); err != nil { return err } } return nil }