MCPcopy
hub / github.com/NVIDIA/aistore / getObject

Function getObject

cmd/cli/commands/object.go:50–154  ·  view source on GitHub ↗
(c *cli.Context, outFile string, silent bool)

Source from the content-addressed store, hash-verified

48)
49
50func getObject(c *cli.Context, outFile string, silent bool) (err error) {
51 var (
52 objArgs api.GetObjectInput
53 bck cmn.Bck
54 objName, archPath string
55 objLen, offset, length int64
56 )
57
58 if c.NArg() < 1 {
59 return missingArgumentsError(c, "object name in the form bucket/object", "output file")
60 }
61
62 uri := c.Args().Get(0)
63 if bck, objName, err = parseBckObjectURI(c, uri); err != nil {
64 return
65 }
66
67 // NOTE: skip HEAD-ing http (ht://) buckets
68 if !bck.IsHTTP() {
69 if _, err = headBucket(bck); err != nil {
70 return
71 }
72 }
73
74 archPath = parseStrFlag(c, archpathFlag)
75 if outFile == "" {
76 if archPath != "" {
77 outFile = filepath.Base(archPath)
78 } else {
79 outFile = filepath.Base(objName)
80 }
81 }
82
83 // just check if remote object is present (do not execute GET)
84 // TODO: archive
85 if flagIsSet(c, checkCachedFlag) {
86 return objectCheckExists(c, bck, objName)
87 }
88
89 if flagIsSet(c, lengthFlag) != flagIsSet(c, offsetFlag) {
90 return incorrectUsageMsg(c, "%q and %q flags both need to be set", lengthFlag.Name, offsetFlag.Name)
91 }
92 if offset, err = parseByteFlagToInt(c, offsetFlag); err != nil {
93 return
94 }
95 if length, err = parseByteFlagToInt(c, lengthFlag); err != nil {
96 return
97 }
98
99 hdr := cmn.RangeHdr(offset, length)
100 if outFile == fileStdIO {
101 objArgs = api.GetObjectInput{Writer: os.Stdout, Header: hdr}
102 silent = true
103 } else {
104 var file *os.File
105 if file, err = os.Create(outFile); err != nil {
106 return
107 }

Callers 2

getHandlerFunction · 0.85
catHandlerFunction · 0.85

Calls 15

RangeHdrFunction · 0.92
GetObjectWithValidationFunction · 0.92
GetObjectFunction · 0.92
IsStatusNotFoundFunction · 0.92
B2SFunction · 0.92
parseBckObjectURIFunction · 0.85
headBucketFunction · 0.85
parseStrFlagFunction · 0.85
flagIsSetFunction · 0.85
objectCheckExistsFunction · 0.85
incorrectUsageMsgFunction · 0.85
parseByteFlagToIntFunction · 0.85

Tested by

no test coverage detected