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  }