github.com/pachyderm/pachyderm@v1.13.4/src/client/godoc_test.go (about) 1 package client 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 "github.com/pachyderm/pachyderm/src/client/pfs" 9 "github.com/pachyderm/pachyderm/src/client/pps" 10 ) 11 12 func ExampleAPIClient_CreateRepo() { 13 14 // Create a repo called "test" and print the list of 15 // repositories. 16 c, err := NewFromAddress("127.0.0.1:30650") 17 if err != nil { 18 panic(err) 19 } 20 21 if _, err := c.PfsAPIClient.CreateRepo( 22 c.Ctx(), 23 &pfs.CreateRepoRequest{ 24 Repo: NewRepo("test"), 25 Description: "A test repo", 26 }, 27 ); err != nil { 28 panic(err) 29 } 30 31 repos, err := c.ListRepo() 32 if err != nil { 33 panic(err) 34 } 35 fmt.Println(repos) 36 37 // Output: 38 // // [repo:<name:"test" > created:<seconds:1584994990 nanos:139176186 > description:"A test repo" 39 } 40 41 func ExampleAPIClient_DeleteRepo() { 42 43 // Delete a repository called "test". 44 c, err := NewFromAddress("127.0.0.1:30650") 45 if err != nil { 46 panic(err) 47 } 48 49 if _, err := c.PfsAPIClient.CreateRepo( 50 c.Ctx(), 51 &pfs.CreateRepoRequest{ 52 Repo: NewRepo("test"), 53 Description: "A test repo", 54 Update: true, 55 }, 56 ); err != nil { 57 panic(err) 58 } 59 60 if err := c.DeleteRepo("test", false); err != nil { 61 panic(err) 62 } 63 } 64 65 func ExampleAPIClient_ListRepo() { 66 67 // View the list of existing repositories. 68 c, err := NewFromAddress("127.0.0.1:30650") 69 if err != nil { 70 panic(err) 71 } 72 73 if _, err := c.PfsAPIClient.CreateRepo( 74 c.Ctx(), 75 &pfs.CreateRepoRequest{ 76 Repo: NewRepo("test"), 77 Description: "A test repo", 78 Update: true, 79 }, 80 ); err != nil { 81 panic(err) 82 } 83 84 repos, err := c.ListRepo() 85 if err != nil { 86 panic(err) 87 } 88 fmt.Println(repos) 89 } 90 91 func ExampleAPIClient_PutFileWriter() { 92 93 // This method enables you to put data into a 94 // Pachyderm repo by using an "io.Writer" API. 95 96 c, err := NewFromAddress("127.0.0.1:30650") 97 if err != nil { 98 panic(err) 99 } 100 101 if _, err := c.PfsAPIClient.CreateRepo( 102 c.Ctx(), 103 &pfs.CreateRepoRequest{ 104 Repo: NewRepo("test"), 105 Description: "A test repo", 106 Update: true, 107 }, 108 ); err != nil { 109 panic(err) 110 } 111 w, err := c.PutFileWriter("test", "master", "file") 112 if err != nil { 113 panic(err) 114 } 115 defer func() { 116 if err := w.Close(); err != nil { 117 panic(err) 118 } 119 }() 120 if _, err := w.Write([]byte("foo\n")); err != nil { 121 panic(err) 122 } 123 124 files, err := c.ListFile("test", "master", "/") 125 if err != nil { 126 panic(err) 127 } 128 fmt.Println(files) 129 } 130 131 func ExampleAPIClient_NewPutFileClient() { 132 133 // This method enables you to group multiple "put file" operations into one 134 // request. 135 136 c, err := NewFromAddress("127.0.0.1:30650") 137 if err != nil { 138 panic(err) 139 } 140 141 if _, err := c.PfsAPIClient.CreateRepo( 142 c.Ctx(), 143 &pfs.CreateRepoRequest{ 144 Repo: NewRepo("test"), 145 Description: "A test repo", 146 Update: true, 147 }, 148 ); err != nil { 149 panic(err) 150 } 151 pfc, err := c.NewPutFileClient() 152 if err != nil { 153 panic(err) 154 } 155 defer func() { 156 if err := pfc.Close(); err != nil { 157 panic(err) 158 } 159 }() 160 if _, err := pfc.PutFile("test", "master", "file", strings.NewReader("foo\n")); err != nil { 161 panic(err) 162 } 163 files, err := c.ListFile("test", "master", "/") 164 if err != nil { 165 panic(err) 166 } 167 fmt.Println(files) 168 } 169 170 func ExampleAPIClient_PutFile_string() { 171 172 // This method provides a simple way to to put file into a Pachyderm repo 173 // by using "io.Reader". In this example, Pachyderm client reads the specified 174 // string in the scripts and adds it to a file named "file" in the "test" 175 // repository. 176 177 c, err := NewFromAddress("127.0.0.1:30650") 178 if err != nil { 179 panic(err) 180 } 181 182 if _, err := c.PfsAPIClient.CreateRepo( 183 c.Ctx(), 184 &pfs.CreateRepoRequest{ 185 Repo: NewRepo("test"), 186 Description: "A test repo", 187 Update: true, 188 }, 189 ); err != nil { 190 panic(err) 191 } 192 193 if _, err := c.PutFile("test", "master", "file", strings.NewReader("foo\n")); err != nil { 194 panic(err) 195 } 196 files, err := c.ListFile("test", "master", "/") 197 if err != nil { 198 panic(err) 199 } 200 fmt.Println(files) 201 202 // Output: 203 // [file:<commit:<repo:<name:"test" > id:"3534c68a694747b6a78a6334ceae437e" > path:"/file" > file_type:FILE size_bytes:4 committed:<seconds:1584999407 nanos:25292638 > hash:"\031\375\365{\337\236\265\251`+\372\234\016m\327\35585\370\375C\035\221P\003\352\202tw\007\276f" ] 204 } 205 206 func ExampleAPIClient_PutFile_file() { 207 208 // This method provides a simple way to to put contents of a file into a 209 // Pachyderm repo by using "io.Reader". In this example the Pachyderm client 210 // opens the file named "text.md" and then uses the PutFile method to add it 211 // to the repo "test@master". 212 213 c, err := NewFromAddress("127.0.0.1:30650") 214 if err != nil { 215 panic(err) 216 } 217 218 if _, err := c.PfsAPIClient.CreateRepo( 219 c.Ctx(), 220 &pfs.CreateRepoRequest{ 221 Repo: NewRepo("test"), 222 Description: "A test repo", 223 Update: true, 224 }, 225 ); err != nil { 226 panic(err) 227 } 228 229 f, err := os.Open("text.md") 230 if err != nil { 231 panic(err) 232 } 233 if _, err := c.PutFile("test", "master", "text", f); err != nil { 234 panic(err) 235 } 236 files, err := c.ListFile("test", "master", "/") 237 if err != nil { 238 panic(err) 239 } 240 fmt.Println(files) 241 } 242 243 func ExampleAPIClient_CreateBranch() { 244 245 // When you create a branch, you need to specify four parameters: 246 // a repository name, a name of the new branch, a commit ID or a 247 // branch that will be used as head, and provenance. Provenance 248 // is an optional paramater and get be set to "nil" for nothing, 249 // to a commit ID or to a branch name. 250 c, err := NewFromAddress("127.0.0.1:30650") 251 if err != nil { 252 panic(err) 253 } 254 255 if _, err := c.PfsAPIClient.CreateRepo( 256 c.Ctx(), 257 &pfs.CreateRepoRequest{ 258 Repo: NewRepo("test"), 259 Description: "A test repo", 260 Update: true, 261 }, 262 ); err != nil { 263 panic(err) 264 } 265 266 if err := c.CreateBranch("test", "newbranch", "master", nil); err != nil { 267 panic(err) 268 } 269 270 bis, err := c.ListBranch("test") 271 if err != nil { 272 panic(err) 273 } 274 fmt.Print(bis) 275 276 // Output: 277 // [branch:<repo:<name:"test" > name:"newbranch" > head:<repo:<name:"test" > id:"1eb10a08e29f4abcaaa647dbaa113514" > name:"newbranch" ] 278 } 279 280 func ExampleAPIClient_ListCommit() { 281 282 // This method enables you to list commits in a repository. 283 // To list all commits, pass only the name of the repository. If you want 284 // to list specific commits, you can specify "to" and "from" parameters. 285 // These both parameters accept a commit ID. 286 // In the example below, the "to" parameter is left blank, and the "from" 287 // parameter is set to "0", which means all commits. 288 289 c, err := NewFromAddress("127.0.0.1:30650") 290 if err != nil { 291 panic(err) 292 } 293 294 if _, err := c.PfsAPIClient.CreateRepo( 295 c.Ctx(), 296 &pfs.CreateRepoRequest{ 297 Repo: NewRepo("test"), 298 Description: "A test repo", 299 Update: true, 300 }, 301 ); err != nil { 302 panic(err) 303 } 304 305 if _, err := c.PutFile("test", "master", "file", strings.NewReader("foo\n")); err != nil { 306 panic(err) 307 } 308 if _, err := c.PutFile("test", "master", "file", strings.NewReader("bar\n")); err != nil { 309 panic(err) 310 } 311 if _, err := c.PutFile("test", "master", "file", strings.NewReader("buzz\n")); err != nil { 312 panic(err) 313 } 314 315 cis, err := c.ListCommit("test", "master", "", 0) 316 if err != nil { 317 panic(err) 318 } 319 for _, ci := range cis { 320 fmt.Println(ci) 321 } 322 323 // Output: 324 // commit:<repo:<name:"test" > id:"1eb10a08e29f4abcaaa647dbaa113514" > branch:<repo:<name:"test" > name:"master" > origin:<> parent_commit:<repo:<name:"test" > id:"f222d4d469454541b373d6c0f66f3f4a" > child_commits:<repo:<name:"test" > id:"1a9f7f3607c54edcaa3f716605bfd2e2" > started:<seconds:1585775813 nanos:529811155 > finished:<seconds:1585775813 nanos:533868208 > size_bytes:12 tree:<hash:"135347e1392ffa244b030d855f3335562970cbbc73125f4bf01ca82e8a9a6eda2a1591573eda30c86c2644c67d989506d2dfc14219865e75f3b383f32dcb550d" > 325 // commit:<repo:<name:"test" > id:"f222d4d469454541b373d6c0f66f3f4a" > branch:<repo:<name:"test" > name:"master" > origin:<> parent_commit:<repo:<name:"test" > id:"3e6bdffda01b47ecbbdf4833343317ad" > child_commits:<repo:<name:"test" > id:"1eb10a08e29f4abcaaa647dbaa113514" > started:<seconds:1585774635 nanos:376380297 > finished:<seconds:1585774635 nanos:382910322 > size_bytes:8 tree:<hash:"2e65e9751f240226046aafad86aa07526fea6c7343c93bc3bd859c1812ebcad86af5be74d9a5a06e4978791852864a07cc3c820802b7eb304ff7792e6e23458e" > 326 // commit:<repo:<name:"test" > id:"3e6bdffda01b47ecbbdf4833343317ad" > branch:<repo:<name:"test" > name:"master" > origin:<> child_commits:<repo:<name:"test" > id:"f222d4d469454541b373d6c0f66f3f4a" > started:<seconds:1585772570 nanos:475140438 > finished:<seconds:1585772570 nanos:481163804 > size_bytes:4 tree:<hash:"9b7798e84aa2885ac7fd1b86fadf556e3330a36802979a4349e44743b26f5e63584506299ecae5bcd5e72c4f42e236618ef8600f6b8da5fd17d8f4ba8d03d0d1" > 327 } 328 329 func ExampleAPIClient_CreateBranch_fromcommit() { 330 331 // This example demonstrates how you can create a branch from a specific 332 // commit. In this example, we create a branch from a commit by referring 333 // to it with the commit index ("cis[1].Commit.ID"). The latest commit 334 // always has the index of "0" and the earliest commit will have a 335 // corresponding index depending on the number commits in the repo. 336 // In the example below, we will create a branch from the commit with 337 // index [1] that adds "file2" in the repository "test" and will create 338 // a branch "new-branch" in which we will add "file4". "newbranch" will 339 // have "file1", "file2", and "file4", but will not have "file3". 340 c, err := NewFromAddress("127.0.0.1:30650") 341 if err != nil { 342 panic(err) 343 } 344 345 if _, err := c.PfsAPIClient.CreateRepo( 346 c.Ctx(), 347 &pfs.CreateRepoRequest{ 348 Repo: NewRepo("test"), 349 Description: "A test repo", 350 Update: true, 351 }, 352 ); err != nil { 353 panic(err) 354 } 355 356 if _, err := c.PutFile("test", "master", "file1", strings.NewReader("foo\n")); err != nil { 357 panic(err) 358 } 359 if _, err := c.PutFile("test", "master", "file2", strings.NewReader("bar\n")); err != nil { 360 panic(err) 361 } 362 if _, err := c.PutFile("test", "master", "file3", strings.NewReader("buzz\n")); err != nil { 363 panic(err) 364 } 365 366 cis, err := c.ListCommit("test", "master", "", 0) 367 if err != nil { 368 panic(err) 369 } 370 371 if err := c.CreateBranch("test", "new-branch", cis[1].Commit.ID, nil); err != nil { 372 panic(err) 373 } 374 if _, err := c.PutFile("test", "new-branch", "file4", strings.NewReader("fizz\n")); err != nil { 375 panic(err) 376 } 377 files, err := c.ListFile("test", "new-branch", "/") 378 if err != nil { 379 panic(err) 380 } 381 fmt.Println(files) 382 383 // Output: 384 // [file:<commit:<repo:<name:"test" > id:"c9f65a41818947b29d99c8a3140a3aa7" > path:"/file1" > file_type:FILE size_bytes:4 committed:<seconds:1585780965 nanos:118756372 > hash:"\031\375\365{\337\236\265\251`+\372\234\016m\327\35585\370\375C\035\221P\003\352\202tw\007\276f" file:<commit:<repo:<name:"test" > id:"c9f65a41818947b29d99c8a3140a3aa7" > path:"/file2" > file_type:FILE size_bytes:4 committed:<seconds:1585780965 nanos:118756372 > hash:"\252t\367r\331\3442S\306\n\013f#\1770\350\3758\345\275\030\374\241\351Z\221\002\273\347sS@" file:<commit:<repo:<name:"test" > id:"c9f65a41818947b29d99c8a3140a3aa7" > path:"/file4" > file_type:FILE size_bytes:5 committed:<seconds:1585780965 nanos:118756372 > hash:"\002hQ!\276\242\2710\362Y4\215SY\275v\037)T\205m\177JK\340\322\177\247\"\"A\367" ] 385 } 386 387 func ExampleAPIClient_ListCommitF() { 388 389 // ListCommitF streams information about each commit one at a time 390 // instead of returning all commits at once. Most of Pachyderm's 391 // "List" methods have a similar function. 392 393 c, err := NewFromAddress("127.0.0.1:30650") 394 if err != nil { 395 panic(err) 396 } 397 398 if _, err := c.PfsAPIClient.CreateRepo( 399 c.Ctx(), 400 &pfs.CreateRepoRequest{ 401 Repo: NewRepo("test"), 402 Description: "A test repo", 403 Update: true, 404 }, 405 ); err != nil { 406 panic(err) 407 } 408 409 if _, err := c.PutFile("test", "master", "file1", strings.NewReader("foo\n")); err != nil { 410 panic(err) 411 } 412 if _, err := c.PutFile("test", "master", "file2", strings.NewReader("bar\n")); err != nil { 413 panic(err) 414 } 415 if _, err := c.PutFile("test", "master", "file3", strings.NewReader("buzz\n")); err != nil { 416 panic(err) 417 } 418 419 var nCommits int 420 if err := c.ListCommitF("test", "master", "", 0, false, func(ci *pfs.CommitInfo) error { 421 fmt.Println(ci) 422 return nil 423 }); err != nil { 424 panic(err) 425 } 426 fmt.Println(nCommits) 427 428 // Output: 429 // commit:<repo:<name:"test" > id:"3ccb4b6876c64b7eb4d9ad4c493b9358" > branch:<repo:<name:"test" > name:"master" > origin:<> parent_commit:<repo:<name:"test" > id:"18308cb493e047f9b0719b1ccd1c03d3" > started:<seconds:1585782258 nanos:38033497 > finished:<seconds:1585782258 nanos:41459369 > size_bytes:13 tree:<hash:"f429d8646b4e920267758c31966489f64820be928339303ae5c944432e364fcff0e4e2c008758a1a0693931cb526eb233ce51824ae20d2f9ff9f2fb5ff95f38b" > 430 // commit:<repo:<name:"test" > id:"18308cb493e047f9b0719b1ccd1c03d3" > branch:<repo:<name:"test" > name:"master" > origin:<> parent_commit:<repo:<name:"test" > id:"de3f5657da294c7a899273693353eb4b" > child_commits:<repo:<name:"test" > id:"3ccb4b6876c64b7eb4d9ad4c493b9358" > started:<seconds:1585782258 nanos:30833622 > finished:<seconds:1585782258 nanos:34399188 > size_bytes:8 tree:<hash:"e12d984752f65223ca2374f11ac93f18641411c2909fab56070140c80c1e7547c7dfdea855b0423a411f894320d6d8b1cde126a5b00c3ccce6d1a8d02bbac4ab" > 431 // commit:<repo:<name:"test" > id:"de3f5657da294c7a899273693353eb4b" > branch:<repo:<name:"test" > name:"master" > origin:<> child_commits:<repo:<name:"test" > id:"18308cb493e047f9b0719b1ccd1c03d3" > started:<seconds:1585782258 nanos:22342806 > finished:<seconds:1585782258 nanos:27145336 > size_bytes:4 tree:<hash:"85d69e603965f7a15867e24a150783d44b778818582aec8311dc90cd6094be61ba5ef7e3a98a950e10317f784de031941de48a4be524af0fa191558da41cffb5" > 432 // 0 433 434 } 435 436 func ExampleAPIClient_CreatePipeline() { 437 438 // This example shows how to create a simple pipeline 439 // called "test-pipeline" that uses a basic image and runs a 440 // bash command that copies the "/pfs/test" directory 441 // to "/pfs/out" directory. Because no image is specified, 442 // Pachyderm will use the basic image. The input is defined as 443 // the repo "test" with the "/*" glob pattern. 444 c, err := NewFromAddress("192.168.64.2:30650") 445 if err != nil { 446 panic(err) 447 } 448 449 if _, err := c.PfsAPIClient.CreateRepo( 450 c.Ctx(), 451 &pfs.CreateRepoRequest{ 452 Repo: NewRepo("test"), 453 Description: "A test repo", 454 Update: true, 455 }, 456 ); err != nil { 457 panic(err) 458 } 459 460 if _, err := c.PutFile("test", "master", "file1", strings.NewReader("foo\n")); err != nil { 461 panic(err) 462 } 463 464 if err := c.CreatePipeline( 465 "test-pipeline", 466 "", 467 []string{"bash"}, 468 []string{ 469 "cp /pfs/test/* /pfs/out/", 470 }, 471 &pps.ParallelismSpec{ 472 Constant: 1, 473 }, 474 NewPFSInput("test", "/*"), 475 "", 476 false, 477 ); err != nil { 478 panic(err) 479 } 480 481 pipelines, err := c.ListPipeline() 482 if err != nil { 483 panic(err) 484 } 485 fmt.Println(pipelines) 486 487 // Output: 488 // [pipeline:<name:"test-pipeline" > version:1 transform:<image:"ubuntu:16.04" cmd:"bash" stdin:"cp /pfs/test/* /pfs/out/" > parallelism_spec:<constant:1 > created_at:<seconds:1585783817 nanos:990814317 > output_branch:"master" input:<pfs:<name:"test" repo:"test" branch:"master" glob:"/*" > > cache_size:"64M" salt:"95e86369074f472c87d77f1116656813" max_queue_size:1 spec_commit:<repo:<name:"__spec__" > id:"7ddade34799b450db6b10231bbb287b7" > datum_tries:3 ] 489 }