October 10, 2016

Breaking changes to cloud.google.com/go/storage:

  • AdminClient replaced by methods on Client. Replace

    adminClient.CreateBucket(ctx, bucketName, attrs)
    

    with

    client.Bucket(bucketName).Create(ctx, projectID, attrs)
    
  • BucketHandle.List replaced by BucketHandle.Objects. Replace

    for query != nil {
        objs, err := bucket.List(d.ctx, query)
        if err != nil { ... }
        query = objs.Next
        for _, obj := range objs.Results {
            fmt.Println(obj)
        }
    }
    

    with

    iter := bucket.Objects(d.ctx, query)
    for {
        obj, err := iter.Next()
        if err == iterator.Done {
            break
        }
        if err != nil { ... }
        fmt.Println(obj)
    }
    

    (The iterator package is at google.golang.org/api/iterator.)

    Replace Query.Cursor with ObjectIterator.PageInfo().Token.

    Replace Query.MaxResults with ObjectIterator.PageInfo().MaxSize.

  • ObjectHandle.CopyTo replaced by ObjectHandle.CopierFrom. Replace

    attrs, err := src.CopyTo(ctx, dst, nil)
    

    with

    attrs, err := dst.CopierFrom(src).Run(ctx)
    

    Replace

    attrs, err := src.CopyTo(ctx, dst, &storage.ObjectAttrs{ContextType: "text/html"})
    

    with

    c := dst.CopierFrom(src)
    c.ContextType = "text/html"
    attrs, err := c.Run(ctx)
    
  • ObjectHandle.ComposeFrom replaced by ObjectHandle.ComposerFrom. Replace

    attrs, err := dst.ComposeFrom(ctx, []*storage.ObjectHandle{src1, src2}, nil)
    

    with

    attrs, err := dst.ComposerFrom(src1, src2).Run(ctx)
    
  • ObjectHandle.Update's ObjectAttrs argument replaced by ObjectAttrsToUpdate. Replace

    attrs, err := obj.Update(ctx, &storage.ObjectAttrs{ContextType: "text/html"})
    

    with

    attrs, err := obj.Update(ctx, storage.ObjectAttrsToUpdate{ContextType: "text/html"})
    
  • ObjectHandle.WithConditions replaced by ObjectHandle.If. Replace

    obj.WithConditions(storage.Generation(gen), storage.IfMetaGenerationMatch(mgen))
    

    with

    obj.Generation(gen).If(storage.Conditions{MetagenerationMatch: mgen})
    

    Replace

    obj.WithConditions(storage.IfGenerationMatch(0))
    

    with

    obj.If(storage.Conditions{DoesNotExist: true})
    
  • storage.Done replaced by iterator.Done (from package google.golang.org/api/iterator).

October 6, 2016

Package preview/logging deleted. Use logging instead.

September 27, 2016

Logging client replaced with preview version (see below).

September 8, 2016

  • New clients for some of Google's Machine Learning APIs: Vision, Speech, and Natural Language.

  • Preview version of a new [Stackdriver Logging][cloud-logging] client in cloud.google.com/go/preview/logging. This client uses gRPC as its transport layer, and supports log reading, sinks and metrics. It will replace the current client at cloud.google.com/go/logging shortly.