| OLD | NEW |
| 1 // Copyright 2016 The LUCI Authors. All rights reserved. | 1 // Copyright 2016 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package swarming | 5 package swarming |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "bytes" | 8 "bytes" |
| 9 "encoding/json" | 9 "encoding/json" |
| 10 "strings" | 10 "strings" |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 Digest: string(chnk.file.Digest), Size: *chnk.file.Size, | 87 Digest: string(chnk.file.Digest), Size: *chnk.file.Size, |
| 88 IsIsolated: chnk.isIso} | 88 IsIsolated: chnk.isIso} |
| 89 } | 89 } |
| 90 | 90 |
| 91 anonC, authC := httpClients(c) | 91 anonC, authC := httpClients(c) |
| 92 | 92 |
| 93 isoClient := isolatedclient.New( | 93 isoClient := isolatedclient.New( |
| 94 anonC, authC, isolateURL, isolatedclient.DefaultNamespace, nil,
nil) | 94 anonC, authC, isolateURL, isolatedclient.DefaultNamespace, nil,
nil) |
| 95 states, err := isoClient.Contains(c, dgsts) | 95 states, err := isoClient.Contains(c, dgsts) |
| 96 if err != nil { | 96 if err != nil { |
| 97 » » err = errors.Annotate(err). | 97 » » err = errors.Annotate(err, "checking containment for %d digests"
, len(dgsts)).Err() |
| 98 » » » D("count", len(dgsts)). | |
| 99 » » » Reason("checking containment for %(count)d digests"). | |
| 100 » » » Err() | |
| 101 return err | 98 return err |
| 102 } | 99 } |
| 103 return parallel.FanOutIn(func(ch chan<- func() error) { | 100 return parallel.FanOutIn(func(ch chan<- func() error) { |
| 104 for i, st := range states { | 101 for i, st := range states { |
| 105 if st != nil { | 102 if st != nil { |
| 106 i, st := i, st | 103 i, st := i, st |
| 107 ch <- func() error { | 104 ch <- func() error { |
| 108 return isoClient.Push(c, st, isolatedcli
ent.NewBytesSource(chunks[i].data)) | 105 return isoClient.Push(c, st, isolatedcli
ent.NewBytesSource(chunks[i].data)) |
| 109 } | 106 } |
| 110 } | 107 } |
| 111 } | 108 } |
| 112 }) | 109 }) |
| 113 } | 110 } |
| 114 | 111 |
| 115 func prepIsolate(c context.Context, isolateURL string, desc *dm.Quest_Desc, prev
*dm.JsonResult, params *sv1.Parameters) (*swarm.SwarmingRpcsFilesRef, error) { | 112 func prepIsolate(c context.Context, isolateURL string, desc *dm.Quest_Desc, prev
*dm.JsonResult, params *sv1.Parameters) (*swarm.SwarmingRpcsFilesRef, error) { |
| 116 prevData := []byte("{}") | 113 prevData := []byte("{}") |
| 117 if prev != nil { | 114 if prev != nil { |
| 118 prevData = []byte(prev.Object) | 115 prevData = []byte(prev.Object) |
| 119 } | 116 } |
| 120 prevFile := mkFile(prevData) | 117 prevFile := mkFile(prevData) |
| 121 descData, descFile := mkMsgFile(desc) | 118 descData, descFile := mkMsgFile(desc) |
| 122 isoData, isoFile := mkIsolated(c, params, prevFile, descFile) | 119 isoData, isoFile := mkIsolated(c, params, prevFile, descFile) |
| 123 | 120 |
| 124 err := pushIsolate(c, isolateURL, []isoChunk{ | 121 err := pushIsolate(c, isolateURL, []isoChunk{ |
| 125 {data: prevData, file: prevFile}, | 122 {data: prevData, file: prevFile}, |
| 126 {data: descData, file: descFile}, | 123 {data: descData, file: descFile}, |
| 127 {data: isoData, file: isoFile, isIso: true}, | 124 {data: isoData, file: isoFile, isIso: true}, |
| 128 }) | 125 }) |
| 129 if err != nil { | 126 if err != nil { |
| 130 » » err = errors.Annotate(err).Reason("pushing new Isolated").Err() | 127 » » err = errors.Annotate(err, "pushing new Isolated").Err() |
| 131 return nil, err | 128 return nil, err |
| 132 } | 129 } |
| 133 | 130 |
| 134 return &swarm.SwarmingRpcsFilesRef{ | 131 return &swarm.SwarmingRpcsFilesRef{ |
| 135 Isolated: string(isoFile.Digest), | 132 Isolated: string(isoFile.Digest), |
| 136 Isolatedserver: isolateURL, | 133 Isolatedserver: isolateURL, |
| 137 Namespace: isolatedclient.DefaultNamespace, | 134 Namespace: isolatedclient.DefaultNamespace, |
| 138 }, nil | 135 }, nil |
| 139 } | 136 } |
| OLD | NEW |