Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(732)

Delta Between Two Patch Sets: cmd/juju/synctools.go

Issue 8663045: upgrade-juju: improvements
Left Patch Set: Created 11 years, 12 months ago
Right Patch Set: upgrade-juju: improvements Created 11 years, 11 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « cmd/juju/environment_test.go ('k') | cmd/juju/upgradejuju.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 package main 1 package main
2 2
3 import ( 3 import (
4 "bytes" 4 "bytes"
5 "fmt" 5 "fmt"
6 "io" 6 "io"
7 "launchpad.net/gnuflag" 7 "launchpad.net/gnuflag"
8 "launchpad.net/juju-core/cmd" 8 "launchpad.net/juju-core/cmd"
9 "launchpad.net/juju-core/environs" 9 "launchpad.net/juju-core/environs"
10 "launchpad.net/juju-core/environs/tools" 10 "launchpad.net/juju-core/environs/tools"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 return err 72 return err
73 } 73 }
74 defer srcFile.Close() 74 defer srcFile.Close()
75 // We have to buffer the content, because Put requires the content 75 // We have to buffer the content, because Put requires the content
76 // length, but Get only returns us a ReadCloser 76 // length, but Get only returns us a ReadCloser
77 buf := &bytes.Buffer{} 77 buf := &bytes.Buffer{}
78 nBytes, err := io.Copy(buf, srcFile) 78 nBytes, err := io.Copy(buf, srcFile)
79 if err != nil { 79 if err != nil {
80 return err 80 return err
81 } 81 }
82 » log.Infof("cmd/juju: downloaded %v (%dkB), uploading", toolsName, (nByte s+512)/1024) 82 » log.Infof("downloaded %v (%dkB), uploading", toolsName, (nBytes+512)/102 4)
83 fmt.Fprintf(ctx.Stderr, ", download %dkB, uploading\n", (nBytes+512)/102 4) 83 fmt.Fprintf(ctx.Stderr, ", download %dkB, uploading\n", (nBytes+512)/102 4)
84 84
85 if err := target.Put(toolsName, buf, nBytes); err != nil { 85 if err := target.Put(toolsName, buf, nBytes); err != nil {
86 return err 86 return err
87 } 87 }
88 return nil 88 return nil
89 } 89 }
90 90
91 func copyTools( 91 func copyTools(
92 tools []*state.Tools, source environs.StorageReader, 92 tools []*state.Tools, source environs.StorageReader,
93 target environs.Storage, dryRun bool, ctx *cmd.Context, 93 target environs.Storage, dryRun bool, ctx *cmd.Context,
94 ) error { 94 ) error {
95 for _, tool := range tools { 95 for _, tool := range tools {
96 » » log.Infof("cmd/juju: copying %s from %s", tool.Binary, tool.URL) 96 » » log.Infof("copying %s from %s", tool.Binary, tool.URL)
97 if dryRun { 97 if dryRun {
98 continue 98 continue
99 } 99 }
100 if err := copyOne(tool, source, target, ctx); err != nil { 100 if err := copyOne(tool, source, target, ctx); err != nil {
101 return err 101 return err
102 } 102 }
103 } 103 }
104 return nil 104 return nil
105 } 105 }
106 106
107 func (c *SyncToolsCommand) Run(ctx *cmd.Context) error { 107 func (c *SyncToolsCommand) Run(ctx *cmd.Context) error {
108 officialEnviron, err := environs.NewFromAttrs(officialBucketAttrs) 108 officialEnviron, err := environs.NewFromAttrs(officialBucketAttrs)
109 if err != nil { 109 if err != nil {
110 » » log.Errorf("cmd/juju: failed to initialize the official bucket e nvironment") 110 » » log.Errorf("failed to initialize the official bucket environment ")
111 return err 111 return err
112 } 112 }
113 fmt.Fprintf(ctx.Stderr, "listing the source bucket\n") 113 fmt.Fprintf(ctx.Stderr, "listing the source bucket\n")
114 sourceToolsList, err := environs.ListTools(officialEnviron, version.Curr ent.Major) 114 sourceToolsList, err := environs.ListTools(officialEnviron, version.Curr ent.Major)
115 if err != nil { 115 if err != nil {
116 return err 116 return err
117 } 117 }
118 targetEnv, err := environs.NewFromName(c.EnvName) 118 targetEnv, err := environs.NewFromName(c.EnvName)
119 if err != nil { 119 if err != nil {
120 » » log.Errorf("cmd/juju: unable to read %q from environment", c.Env Name) 120 » » log.Errorf("unable to read %q from environment", c.EnvName)
121 return err 121 return err
122 } 122 }
123 toolsToCopy := sourceToolsList.Public 123 toolsToCopy := sourceToolsList.Public
124 if !c.allVersions { 124 if !c.allVersions {
125 » » toolsToCopy, _ = toolsToCopy.Newest() 125 » » _, toolsToCopy = toolsToCopy.Newest()
126 } 126 }
127 fmt.Fprintf(ctx.Stderr, "found %d tools in source (%d recent ones)\n", 127 fmt.Fprintf(ctx.Stderr, "found %d tools in source (%d recent ones)\n",
128 len(sourceToolsList.Public), len(toolsToCopy)) 128 len(sourceToolsList.Public), len(toolsToCopy))
129 for _, tool := range toolsToCopy { 129 for _, tool := range toolsToCopy {
130 » » log.Debugf("cmd/juju: found source tool: %s", tool) 130 » » log.Debugf("found source tool: %s", tool)
131 } 131 }
132 fmt.Fprintf(ctx.Stderr, "listing target bucket\n") 132 fmt.Fprintf(ctx.Stderr, "listing target bucket\n")
133 targetToolsList, err := environs.ListTools(targetEnv, version.Current.Ma jor) 133 targetToolsList, err := environs.ListTools(targetEnv, version.Current.Ma jor)
134 if err != nil { 134 if err != nil {
135 return err 135 return err
136 } 136 }
137 targetTools := targetToolsList.Private 137 targetTools := targetToolsList.Private
138 targetStorage := targetEnv.Storage() 138 targetStorage := targetEnv.Storage()
139 if c.publicBucket { 139 if c.publicBucket {
140 targetTools = targetToolsList.Public 140 targetTools = targetToolsList.Public
141 var ok bool 141 var ok bool
142 if targetStorage, ok = targetEnv.PublicStorage().(environs.Stora ge); !ok { 142 if targetStorage, ok = targetEnv.PublicStorage().(environs.Stora ge); !ok {
143 return fmt.Errorf("Cannot write to PublicStorage") 143 return fmt.Errorf("Cannot write to PublicStorage")
144 } 144 }
145 } 145 }
146 for _, tool := range targetTools { 146 for _, tool := range targetTools {
147 » » log.Debugf("cmd/juju: found target tool: %s", tool) 147 » » log.Debugf("found target tool: %s", tool)
148 } 148 }
149 missing := toolsToCopy.Exclude(targetTools) 149 missing := toolsToCopy.Exclude(targetTools)
150 fmt.Fprintf(ctx.Stdout, "found %d tools in target; %d tools to be copied \n", 150 fmt.Fprintf(ctx.Stdout, "found %d tools in target; %d tools to be copied \n",
151 len(targetTools), len(missing)) 151 len(targetTools), len(missing))
152 err = copyTools(missing, officialEnviron.PublicStorage(), targetStorage, c.dryRun, ctx) 152 err = copyTools(missing, officialEnviron.PublicStorage(), targetStorage, c.dryRun, ctx)
153 if err != nil { 153 if err != nil {
154 return err 154 return err
155 } 155 }
156 fmt.Fprintf(ctx.Stderr, "copied %d tools\n", len(missing)) 156 fmt.Fprintf(ctx.Stderr, "copied %d tools\n", len(missing))
157 return nil 157 return nil
158 } 158 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b