| ... | ... |
@@ -1,911 +1,926 @@ |
| 1 | 1 |
{
|
| 2 |
- "ImportPath": "github.com/openshift/origin", |
|
| 3 |
- "GoVersion": "go1.3.1", |
|
| 4 |
- "Packages": [ |
|
| 5 |
- "./..." |
|
| 6 |
- ], |
|
| 7 |
- "Deps": [ |
|
| 8 |
- {
|
|
| 9 |
- "ImportPath": "bitbucket.org/ww/goautoneg", |
|
| 10 |
- "Comment": "null-5", |
|
| 11 |
- "Rev": "75cd24fc2f2c2a2088577d12123ddee5f54e0675" |
|
| 12 |
- }, |
|
| 13 |
- {
|
|
| 14 |
- "ImportPath": "code.google.com/p/go-uuid/uuid", |
|
| 15 |
- "Comment": "null-12", |
|
| 16 |
- "Rev": "7dda39b2e7d5e265014674c5af696ba4186679e9" |
|
| 17 |
- }, |
|
| 18 |
- {
|
|
| 19 |
- "ImportPath": "code.google.com/p/go.exp/inotify", |
|
| 20 |
- "Comment": "null-75", |
|
| 21 |
- "Rev": "bd8df7009305d6ada223ea3c95b94c0f38bfa119" |
|
| 22 |
- }, |
|
| 23 |
- {
|
|
| 24 |
- "ImportPath": "code.google.com/p/go.net/spdy", |
|
| 25 |
- "Comment": "null-240", |
|
| 26 |
- "Rev": "937a34c9de13c766c814510f76bca091dee06028" |
|
| 27 |
- }, |
|
| 28 |
- {
|
|
| 29 |
- "ImportPath": "code.google.com/p/goauth2/oauth", |
|
| 30 |
- "Comment": "weekly-50", |
|
| 31 |
- "Rev": "7fc9d958c83464bd7650240569bf93a102266e6a" |
|
| 32 |
- }, |
|
| 33 |
- {
|
|
| 34 |
- "ImportPath": "code.google.com/p/google-api-go-client/compute/v1", |
|
| 35 |
- "Comment": "release-105", |
|
| 36 |
- "Rev": "98c78185197025f935947caac56a7b6d022f89d2" |
|
| 37 |
- }, |
|
| 38 |
- {
|
|
| 39 |
- "ImportPath": "code.google.com/p/google-api-go-client/container/v1beta1", |
|
| 40 |
- "Comment": "release-105", |
|
| 41 |
- "Rev": "98c78185197025f935947caac56a7b6d022f89d2" |
|
| 42 |
- }, |
|
| 43 |
- {
|
|
| 44 |
- "ImportPath": "code.google.com/p/google-api-go-client/googleapi", |
|
| 45 |
- "Comment": "release-105", |
|
| 46 |
- "Rev": "98c78185197025f935947caac56a7b6d022f89d2" |
|
| 47 |
- }, |
|
| 48 |
- {
|
|
| 49 |
- "ImportPath": "github.com/AdRoll/goamz/aws", |
|
| 50 |
- "Rev": "c73835dc8fc6958baf8df8656864ee4d6d04b130" |
|
| 51 |
- }, |
|
| 52 |
- {
|
|
| 53 |
- "ImportPath": "github.com/AdRoll/goamz/s3", |
|
| 54 |
- "Rev": "c73835dc8fc6958baf8df8656864ee4d6d04b130" |
|
| 55 |
- }, |
|
| 56 |
- {
|
|
| 57 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/admission", |
|
| 58 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 59 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 60 |
- }, |
|
| 61 |
- {
|
|
| 62 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/api", |
|
| 63 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 64 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 65 |
- }, |
|
| 66 |
- {
|
|
| 67 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver", |
|
| 68 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 69 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 70 |
- }, |
|
| 71 |
- {
|
|
| 72 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/authenticator", |
|
| 73 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 74 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 75 |
- }, |
|
| 76 |
- {
|
|
| 77 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/authorizer", |
|
| 78 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 79 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 80 |
- }, |
|
| 81 |
- {
|
|
| 82 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/handlers", |
|
| 83 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 84 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 85 |
- }, |
|
| 86 |
- {
|
|
| 87 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/user", |
|
| 88 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 89 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 90 |
- }, |
|
| 91 |
- {
|
|
| 92 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/capabilities", |
|
| 93 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 94 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 95 |
- }, |
|
| 96 |
- {
|
|
| 97 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/client", |
|
| 98 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 99 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 100 |
- }, |
|
| 101 |
- {
|
|
| 102 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/clientauth", |
|
| 103 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 104 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 105 |
- }, |
|
| 106 |
- {
|
|
| 107 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider", |
|
| 108 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 109 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 110 |
- }, |
|
| 111 |
- {
|
|
| 112 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/controller", |
|
| 113 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 114 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 115 |
- }, |
|
| 116 |
- {
|
|
| 117 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/conversion", |
|
| 118 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 119 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 120 |
- }, |
|
| 121 |
- {
|
|
| 122 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/credentialprovider", |
|
| 123 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 124 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 125 |
- }, |
|
| 126 |
- {
|
|
| 127 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/fields", |
|
| 128 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 129 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 130 |
- }, |
|
| 131 |
- {
|
|
| 132 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/healthz", |
|
| 133 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 134 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 135 |
- }, |
|
| 136 |
- {
|
|
| 137 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/httplog", |
|
| 138 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 139 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 140 |
- }, |
|
| 141 |
- {
|
|
| 142 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl", |
|
| 143 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 144 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 145 |
- }, |
|
| 146 |
- {
|
|
| 147 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet", |
|
| 148 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 149 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 150 |
- }, |
|
| 151 |
- {
|
|
| 152 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/labels", |
|
| 153 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 154 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 155 |
- }, |
|
| 156 |
- {
|
|
| 157 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/master", |
|
| 158 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 159 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 160 |
- }, |
|
| 161 |
- {
|
|
| 162 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/probe", |
|
| 163 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 164 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 165 |
- }, |
|
| 166 |
- {
|
|
| 167 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/proxy", |
|
| 168 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 169 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 170 |
- }, |
|
| 171 |
- {
|
|
| 172 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/controller", |
|
| 173 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 174 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 175 |
- }, |
|
| 176 |
- {
|
|
| 177 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/endpoint", |
|
| 178 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 179 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 180 |
- }, |
|
| 181 |
- {
|
|
| 182 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/etcd", |
|
| 183 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 184 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 185 |
- }, |
|
| 186 |
- {
|
|
| 187 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/event", |
|
| 188 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 189 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 190 |
- }, |
|
| 191 |
- {
|
|
| 192 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic", |
|
| 193 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 194 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 195 |
- }, |
|
| 196 |
- {
|
|
| 197 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/limitrange", |
|
| 198 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 199 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 200 |
- }, |
|
| 201 |
- {
|
|
| 202 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/minion", |
|
| 203 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 204 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 205 |
- }, |
|
| 206 |
- {
|
|
| 207 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/namespace", |
|
| 208 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 209 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 210 |
- }, |
|
| 211 |
- {
|
|
| 212 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/pod", |
|
| 213 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 214 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 215 |
- }, |
|
| 216 |
- {
|
|
| 217 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/resourcequota", |
|
| 218 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 219 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 220 |
- }, |
|
| 221 |
- {
|
|
| 222 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/secret", |
|
| 223 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 224 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 225 |
- }, |
|
| 226 |
- {
|
|
| 227 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/service", |
|
| 228 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 229 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 230 |
- }, |
|
| 231 |
- {
|
|
| 232 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/resourcequota", |
|
| 233 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 234 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 235 |
- }, |
|
| 236 |
- {
|
|
| 237 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime", |
|
| 238 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 239 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 240 |
- }, |
|
| 241 |
- {
|
|
| 242 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/scheduler", |
|
| 243 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 244 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 245 |
- }, |
|
| 246 |
- {
|
|
| 247 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/service", |
|
| 248 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 249 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 250 |
- }, |
|
| 251 |
- {
|
|
| 252 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/tools", |
|
| 253 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 254 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 255 |
- }, |
|
| 256 |
- {
|
|
| 257 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/types", |
|
| 258 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 259 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 260 |
- }, |
|
| 261 |
- {
|
|
| 262 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/ui", |
|
| 263 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 264 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 265 |
- }, |
|
| 266 |
- {
|
|
| 267 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/util", |
|
| 268 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 269 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 270 |
- }, |
|
| 271 |
- {
|
|
| 272 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/version", |
|
| 273 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 274 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 275 |
- }, |
|
| 276 |
- {
|
|
| 277 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/volume", |
|
| 278 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 279 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 280 |
- }, |
|
| 281 |
- {
|
|
| 282 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/watch", |
|
| 283 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 284 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 285 |
- }, |
|
| 286 |
- {
|
|
| 287 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/admit", |
|
| 288 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 289 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 290 |
- }, |
|
| 291 |
- {
|
|
| 292 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/limitranger", |
|
| 293 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 294 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 295 |
- }, |
|
| 296 |
- {
|
|
| 297 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/namespace/exists", |
|
| 298 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 299 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 300 |
- }, |
|
| 301 |
- {
|
|
| 302 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/namespace/lifecycle", |
|
| 303 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 304 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 305 |
- }, |
|
| 306 |
- {
|
|
| 307 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/resourcedefaults", |
|
| 308 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 309 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 310 |
- }, |
|
| 311 |
- {
|
|
| 312 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/resourcequota", |
|
| 313 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 314 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 315 |
- }, |
|
| 316 |
- {
|
|
| 317 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/auth/authenticator/token/tokenfile", |
|
| 318 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 319 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 320 |
- }, |
|
| 321 |
- {
|
|
| 322 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler", |
|
| 323 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 324 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 325 |
- }, |
|
| 326 |
- {
|
|
| 327 |
- "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/third_party/golang/netutil", |
|
| 328 |
- "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 329 |
- "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 330 |
- }, |
|
| 331 |
- {
|
|
| 332 |
- "ImportPath": "github.com/RangelReale/osin", |
|
| 333 |
- "Rev": "1f4e9754a8931fbd9834ab11592f358418efc9ff" |
|
| 334 |
- }, |
|
| 335 |
- {
|
|
| 336 |
- "ImportPath": "github.com/RangelReale/osincli", |
|
| 337 |
- "Rev": "23618ea0fc3faa3f43954ce8ff48e31f5c784212" |
|
| 338 |
- }, |
|
| 339 |
- {
|
|
| 340 |
- "ImportPath": "github.com/Sirupsen/logrus", |
|
| 341 |
- "Comment": "v0.6.6-2-g2cea0f0", |
|
| 342 |
- "Rev": "2cea0f0d141f56fae06df5b813ec4119d1c8ccbd" |
|
| 343 |
- }, |
|
| 344 |
- {
|
|
| 345 |
- "ImportPath": "github.com/abbot/go-http-auth", |
|
| 346 |
- "Rev": "c0ef4539dfab4d21c8ef20ba2924f9fc6f186d35" |
|
| 347 |
- }, |
|
| 348 |
- {
|
|
| 349 |
- "ImportPath": "github.com/awalterschulze/gographviz", |
|
| 350 |
- "Rev": "20d1f693416d9be045340150094aa42035a41c9e" |
|
| 351 |
- }, |
|
| 352 |
- {
|
|
| 353 |
- "ImportPath": "github.com/beorn7/perks/quantile", |
|
| 354 |
- "Rev": "b965b613227fddccbfffe13eae360ed3fa822f8d" |
|
| 355 |
- }, |
|
| 356 |
- {
|
|
| 357 |
- "ImportPath": "github.com/coreos/etcd/config", |
|
| 358 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 359 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 360 |
- }, |
|
| 361 |
- {
|
|
| 362 |
- "ImportPath": "github.com/coreos/etcd/discovery", |
|
| 363 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 364 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 365 |
- }, |
|
| 366 |
- {
|
|
| 367 |
- "ImportPath": "github.com/coreos/etcd/error", |
|
| 368 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 369 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 370 |
- }, |
|
| 371 |
- {
|
|
| 372 |
- "ImportPath": "github.com/coreos/etcd/etcd", |
|
| 373 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 374 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 375 |
- }, |
|
| 376 |
- {
|
|
| 377 |
- "ImportPath": "github.com/coreos/etcd/http", |
|
| 378 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 379 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 380 |
- }, |
|
| 381 |
- {
|
|
| 382 |
- "ImportPath": "github.com/coreos/etcd/log", |
|
| 383 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 384 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 385 |
- }, |
|
| 386 |
- {
|
|
| 387 |
- "ImportPath": "github.com/coreos/etcd/metrics", |
|
| 388 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 389 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 390 |
- }, |
|
| 391 |
- {
|
|
| 392 |
- "ImportPath": "github.com/coreos/etcd/mod", |
|
| 393 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 394 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 395 |
- }, |
|
| 396 |
- {
|
|
| 397 |
- "ImportPath": "github.com/coreos/etcd/pkg/btrfs", |
|
| 398 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 399 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 400 |
- }, |
|
| 401 |
- {
|
|
| 402 |
- "ImportPath": "github.com/coreos/etcd/pkg/http", |
|
| 403 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 404 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 405 |
- }, |
|
| 406 |
- {
|
|
| 407 |
- "ImportPath": "github.com/coreos/etcd/pkg/strings", |
|
| 408 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 409 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 410 |
- }, |
|
| 411 |
- {
|
|
| 412 |
- "ImportPath": "github.com/coreos/etcd/server", |
|
| 413 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 414 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 415 |
- }, |
|
| 416 |
- {
|
|
| 417 |
- "ImportPath": "github.com/coreos/etcd/store", |
|
| 418 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 419 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 420 |
- }, |
|
| 421 |
- {
|
|
| 422 |
- "ImportPath": "github.com/coreos/etcd/third_party/bitbucket.org/kardianos/osext", |
|
| 423 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 424 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 425 |
- }, |
|
| 426 |
- {
|
|
| 427 |
- "ImportPath": "github.com/coreos/etcd/third_party/code.google.com/p/gogoprotobuf/proto", |
|
| 428 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 429 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 430 |
- }, |
|
| 431 |
- {
|
|
| 432 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/BurntSushi/toml", |
|
| 433 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 434 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 435 |
- }, |
|
| 436 |
- {
|
|
| 437 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/coreos/go-etcd/etcd", |
|
| 438 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 439 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 440 |
- }, |
|
| 441 |
- {
|
|
| 442 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/coreos/go-log/log", |
|
| 443 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 444 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 445 |
- }, |
|
| 446 |
- {
|
|
| 447 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/coreos/go-systemd/journal", |
|
| 448 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 449 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 450 |
- }, |
|
| 451 |
- {
|
|
| 452 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/goraft/raft", |
|
| 453 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 454 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 455 |
- }, |
|
| 456 |
- {
|
|
| 457 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/gorilla/context", |
|
| 458 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 459 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 460 |
- }, |
|
| 461 |
- {
|
|
| 462 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/gorilla/mux", |
|
| 463 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 464 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 465 |
- }, |
|
| 466 |
- {
|
|
| 467 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/mreiferson/go-httpclient", |
|
| 468 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 469 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 470 |
- }, |
|
| 471 |
- {
|
|
| 472 |
- "ImportPath": "github.com/coreos/etcd/third_party/github.com/rcrowley/go-metrics", |
|
| 473 |
- "Comment": "v0.4.3-7-gfc2afe1", |
|
| 474 |
- "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 475 |
- }, |
|
| 476 |
- {
|
|
| 477 |
- "ImportPath": "github.com/coreos/go-etcd/etcd", |
|
| 478 |
- "Comment": "v0.2.0-rc1-120-g23142f6", |
|
| 479 |
- "Rev": "23142f6773a676cc2cae8dd0cb90b2ea761c853f" |
|
| 480 |
- }, |
|
| 481 |
- {
|
|
| 482 |
- "ImportPath": "github.com/coreos/go-systemd/activation", |
|
| 483 |
- "Comment": "v2-27-g97e243d", |
|
| 484 |
- "Rev": "97e243d21a8e232e9d8af38ba2366dfcfceebeba" |
|
| 485 |
- }, |
|
| 486 |
- {
|
|
| 487 |
- "ImportPath": "github.com/coreos/go-systemd/daemon", |
|
| 488 |
- "Comment": "v2-27-g97e243d", |
|
| 489 |
- "Rev": "97e243d21a8e232e9d8af38ba2366dfcfceebeba" |
|
| 490 |
- }, |
|
| 491 |
- {
|
|
| 492 |
- "ImportPath": "github.com/coreos/go-systemd/dbus", |
|
| 493 |
- "Comment": "v2-27-g97e243d", |
|
| 494 |
- "Rev": "97e243d21a8e232e9d8af38ba2366dfcfceebeba" |
|
| 495 |
- }, |
|
| 496 |
- {
|
|
| 497 |
- "ImportPath": "github.com/davecgh/go-spew/spew", |
|
| 498 |
- "Rev": "1aaf839fb07e099361e445273993ccd9adc21b07" |
|
| 499 |
- }, |
|
| 500 |
- {
|
|
| 501 |
- "ImportPath": "github.com/daviddengcn/go-colortext", |
|
| 502 |
- "Rev": "b5c0891944c2f150ccc9d02aecf51b76c14c2948" |
|
| 503 |
- }, |
|
| 504 |
- {
|
|
| 505 |
- "ImportPath": "github.com/docker/distribution", |
|
| 506 |
- "Comment": "v2.0.0-alpha.3-30-g06fcf05", |
|
| 507 |
- "Rev": "06fcf053e7b45aa8608c6bf32e8d3227b31d3747" |
|
| 508 |
- }, |
|
| 509 |
- {
|
|
| 510 |
- "ImportPath": "github.com/docker/docker/builder/command", |
|
| 511 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 512 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 513 |
- }, |
|
| 514 |
- {
|
|
| 515 |
- "ImportPath": "github.com/docker/docker/builder/parser", |
|
| 516 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 517 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 518 |
- }, |
|
| 519 |
- {
|
|
| 520 |
- "ImportPath": "github.com/docker/docker/pkg/archive", |
|
| 521 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 522 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 523 |
- }, |
|
| 524 |
- {
|
|
| 525 |
- "ImportPath": "github.com/docker/docker/pkg/fileutils", |
|
| 526 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 527 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 528 |
- }, |
|
| 529 |
- {
|
|
| 530 |
- "ImportPath": "github.com/docker/docker/pkg/ioutils", |
|
| 531 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 532 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 533 |
- }, |
|
| 534 |
- {
|
|
| 535 |
- "ImportPath": "github.com/docker/docker/pkg/mount", |
|
| 536 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 537 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 538 |
- }, |
|
| 539 |
- {
|
|
| 540 |
- "ImportPath": "github.com/docker/docker/pkg/parsers", |
|
| 541 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 542 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 543 |
- }, |
|
| 544 |
- {
|
|
| 545 |
- "ImportPath": "github.com/docker/docker/pkg/pools", |
|
| 546 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 547 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 548 |
- }, |
|
| 549 |
- {
|
|
| 550 |
- "ImportPath": "github.com/docker/docker/pkg/promise", |
|
| 551 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 552 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 553 |
- }, |
|
| 554 |
- {
|
|
| 555 |
- "ImportPath": "github.com/docker/docker/pkg/symlink", |
|
| 556 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 557 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 558 |
- }, |
|
| 559 |
- {
|
|
| 560 |
- "ImportPath": "github.com/docker/docker/pkg/system", |
|
| 561 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 562 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 563 |
- }, |
|
| 564 |
- {
|
|
| 565 |
- "ImportPath": "github.com/docker/docker/pkg/tarsum", |
|
| 566 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 567 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 568 |
- }, |
|
| 569 |
- {
|
|
| 570 |
- "ImportPath": "github.com/docker/docker/pkg/term", |
|
| 571 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 572 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 573 |
- }, |
|
| 574 |
- {
|
|
| 575 |
- "ImportPath": "github.com/docker/docker/pkg/units", |
|
| 576 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 577 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 578 |
- }, |
|
| 579 |
- {
|
|
| 580 |
- "ImportPath": "github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar", |
|
| 581 |
- "Comment": "v1.4.1-1714-ged66853", |
|
| 582 |
- "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 583 |
- }, |
|
| 584 |
- {
|
|
| 585 |
- "ImportPath": "github.com/docker/libcontainer", |
|
| 586 |
- "Comment": "v1.4.0-52-gd7dea0e", |
|
| 587 |
- "Rev": "d7dea0e925315bab640115053204c16718839b1e" |
|
| 588 |
- }, |
|
| 589 |
- {
|
|
| 590 |
- "ImportPath": "github.com/docker/libtrust", |
|
| 591 |
- "Rev": "c54fbb67c1f1e68d7d6f8d2ad7c9360404616a41" |
|
| 592 |
- }, |
|
| 593 |
- {
|
|
| 594 |
- "ImportPath": "github.com/docker/spdystream", |
|
| 595 |
- "Rev": "e731c8f9f19ffd7e51a469a2de1580c1dfbb4fae" |
|
| 596 |
- }, |
|
| 597 |
- {
|
|
| 598 |
- "ImportPath": "github.com/elazarl/go-bindata-assetfs", |
|
| 599 |
- "Rev": "ae4665cf2d188c65764c73fe4af5378acc549510" |
|
| 600 |
- }, |
|
| 601 |
- {
|
|
| 602 |
- "ImportPath": "github.com/emicklei/go-restful", |
|
| 603 |
- "Comment": "v1.1.3-26-g977ac8f", |
|
| 604 |
- "Rev": "977ac8fcbcd2ee33319246f7c91d4b426402dc70" |
|
| 605 |
- }, |
|
| 606 |
- {
|
|
| 607 |
- "ImportPath": "github.com/evanphx/json-patch", |
|
| 608 |
- "Rev": "7dd4489c2eb6073e5a9d7746c3274c5b5f0387df" |
|
| 609 |
- }, |
|
| 610 |
- {
|
|
| 611 |
- "ImportPath": "github.com/fsouza/go-dockerclient", |
|
| 612 |
- "Rev": "bd32742a065748632a860c9ffd8adf42cc4e140f" |
|
| 613 |
- }, |
|
| 614 |
- {
|
|
| 615 |
- "ImportPath": "github.com/getsentry/raven-go", |
|
| 616 |
- "Rev": "86cd4063c535cbbcbf43d84424dbd5911ab1b818" |
|
| 617 |
- }, |
|
| 618 |
- {
|
|
| 619 |
- "ImportPath": "github.com/ghodss/yaml", |
|
| 620 |
- "Rev": "588cb435e59ee8b6c2795482887755841ad67207" |
|
| 621 |
- }, |
|
| 622 |
- {
|
|
| 623 |
- "ImportPath": "github.com/godbus/dbus", |
|
| 624 |
- "Comment": "0-7-g939230d", |
|
| 625 |
- "Rev": "939230d2086a4f1870e04c52e0a376c25bae0ec4" |
|
| 626 |
- }, |
|
| 627 |
- {
|
|
| 628 |
- "ImportPath": "github.com/golang/glog", |
|
| 629 |
- "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" |
|
| 630 |
- }, |
|
| 631 |
- {
|
|
| 632 |
- "ImportPath": "github.com/golang/groupcache/lru", |
|
| 633 |
- "Rev": "604ed5785183e59ae2789449d89e73f3a2a77987" |
|
| 634 |
- }, |
|
| 635 |
- {
|
|
| 636 |
- "ImportPath": "github.com/golang/protobuf/proto", |
|
| 637 |
- "Rev": "7f07925444bb51fa4cf9dfe6f7661876f8852275" |
|
| 638 |
- }, |
|
| 639 |
- {
|
|
| 640 |
- "ImportPath": "github.com/google/cadvisor/api", |
|
| 641 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 642 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 643 |
- }, |
|
| 644 |
- {
|
|
| 645 |
- "ImportPath": "github.com/google/cadvisor/container", |
|
| 646 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 647 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 648 |
- }, |
|
| 649 |
- {
|
|
| 650 |
- "ImportPath": "github.com/google/cadvisor/events", |
|
| 651 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 652 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 653 |
- }, |
|
| 654 |
- {
|
|
| 655 |
- "ImportPath": "github.com/google/cadvisor/fs", |
|
| 656 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 657 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 658 |
- }, |
|
| 659 |
- {
|
|
| 660 |
- "ImportPath": "github.com/google/cadvisor/healthz", |
|
| 661 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 662 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 663 |
- }, |
|
| 664 |
- {
|
|
| 665 |
- "ImportPath": "github.com/google/cadvisor/http", |
|
| 666 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 667 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 668 |
- }, |
|
| 669 |
- {
|
|
| 670 |
- "ImportPath": "github.com/google/cadvisor/info/v1", |
|
| 671 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 672 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 673 |
- }, |
|
| 674 |
- {
|
|
| 675 |
- "ImportPath": "github.com/google/cadvisor/info/v2", |
|
| 676 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 677 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 678 |
- }, |
|
| 679 |
- {
|
|
| 680 |
- "ImportPath": "github.com/google/cadvisor/manager", |
|
| 681 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 682 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 683 |
- }, |
|
| 684 |
- {
|
|
| 685 |
- "ImportPath": "github.com/google/cadvisor/metrics", |
|
| 686 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 687 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 688 |
- }, |
|
| 689 |
- {
|
|
| 690 |
- "ImportPath": "github.com/google/cadvisor/pages", |
|
| 691 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 692 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 693 |
- }, |
|
| 694 |
- {
|
|
| 695 |
- "ImportPath": "github.com/google/cadvisor/storage", |
|
| 696 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 697 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 698 |
- }, |
|
| 699 |
- {
|
|
| 700 |
- "ImportPath": "github.com/google/cadvisor/summary", |
|
| 701 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 702 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 703 |
- }, |
|
| 704 |
- {
|
|
| 705 |
- "ImportPath": "github.com/google/cadvisor/utils", |
|
| 706 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 707 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 708 |
- }, |
|
| 709 |
- {
|
|
| 710 |
- "ImportPath": "github.com/google/cadvisor/validate", |
|
| 711 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 712 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 713 |
- }, |
|
| 714 |
- {
|
|
| 715 |
- "ImportPath": "github.com/google/cadvisor/version", |
|
| 716 |
- "Comment": "0.10.1-106-gfd9f7e0", |
|
| 717 |
- "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 718 |
- }, |
|
| 719 |
- {
|
|
| 720 |
- "ImportPath": "github.com/google/gofuzz", |
|
| 721 |
- "Rev": "bbcb9da2d746f8bdbd6a936686a0a6067ada0ec5" |
|
| 722 |
- }, |
|
| 723 |
- {
|
|
| 724 |
- "ImportPath": "github.com/gorilla/context", |
|
| 725 |
- "Rev": "215affda49addc4c8ef7e2534915df2c8c35c6cd" |
|
| 726 |
- }, |
|
| 727 |
- {
|
|
| 728 |
- "ImportPath": "github.com/gorilla/handlers", |
|
| 729 |
- "Rev": "4ef72b2795a418935d497c8db213080be06f8850" |
|
| 730 |
- }, |
|
| 731 |
- {
|
|
| 732 |
- "ImportPath": "github.com/gorilla/mux", |
|
| 733 |
- "Rev": "8096f47503459bcc74d1f4c487b7e6e42e5746b5" |
|
| 734 |
- }, |
|
| 735 |
- {
|
|
| 736 |
- "ImportPath": "github.com/gorilla/securecookie", |
|
| 737 |
- "Rev": "1b0c7f6e9ab3d7f500fd7d50c7ad835ff428139b" |
|
| 738 |
- }, |
|
| 739 |
- {
|
|
| 740 |
- "ImportPath": "github.com/gorilla/sessions", |
|
| 741 |
- "Rev": "aa5e036e6c44aec69a32eb41097001978b29ad31" |
|
| 742 |
- }, |
|
| 743 |
- {
|
|
| 744 |
- "ImportPath": "github.com/imdario/mergo", |
|
| 745 |
- "Comment": "0.1.3-8-g6633656", |
|
| 746 |
- "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" |
|
| 747 |
- }, |
|
| 748 |
- {
|
|
| 749 |
- "ImportPath": "github.com/jteeuwen/go-bindata", |
|
| 750 |
- "Comment": "v3.0.7-2-gf94581b", |
|
| 751 |
- "Rev": "f94581bd91620d0ccd9c22bb1d2de13f6a605857" |
|
| 752 |
- }, |
|
| 753 |
- {
|
|
| 754 |
- "ImportPath": "github.com/kr/pty", |
|
| 755 |
- "Comment": "release.r56-25-g05017fc", |
|
| 756 |
- "Rev": "05017fcccf23c823bfdea560dcc958a136e54fb7" |
|
| 757 |
- }, |
|
| 758 |
- {
|
|
| 759 |
- "ImportPath": "github.com/matttproud/golang_protobuf_extensions/ext", |
|
| 760 |
- "Rev": "ba7d65ac66e9da93a714ca18f6d1bc7a0c09100c" |
|
| 761 |
- }, |
|
| 762 |
- {
|
|
| 763 |
- "ImportPath": "github.com/miekg/dns", |
|
| 764 |
- "Rev": "3f504e8dabd5d562e997d19ce0200aa41973e1b2" |
|
| 765 |
- }, |
|
| 766 |
- {
|
|
| 767 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/api", |
|
| 768 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 769 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 770 |
- }, |
|
| 771 |
- {
|
|
| 772 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/build", |
|
| 773 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 774 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 775 |
- }, |
|
| 776 |
- {
|
|
| 777 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/docker", |
|
| 778 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 779 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 780 |
- }, |
|
| 781 |
- {
|
|
| 782 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/errors", |
|
| 783 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 784 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 785 |
- }, |
|
| 786 |
- {
|
|
| 787 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/git", |
|
| 788 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 789 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 790 |
- }, |
|
| 791 |
- {
|
|
| 792 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/scripts", |
|
| 793 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 794 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 795 |
- }, |
|
| 796 |
- {
|
|
| 797 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/tar", |
|
| 798 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 799 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 800 |
- }, |
|
| 801 |
- {
|
|
| 802 |
- "ImportPath": "github.com/openshift/source-to-image/pkg/util", |
|
| 803 |
- "Comment": "v0.2-8-gc0c154e", |
|
| 804 |
- "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 805 |
- }, |
|
| 806 |
- {
|
|
| 807 |
- "ImportPath": "github.com/pkg/profile", |
|
| 808 |
- "Rev": "c795610ec6e479e5795f7852db65ea15073674a6" |
|
| 809 |
- }, |
|
| 810 |
- {
|
|
| 811 |
- "ImportPath": "github.com/prometheus/client_golang/model", |
|
| 812 |
- "Comment": "0.2.0-5-gde5f7a2", |
|
| 813 |
- "Rev": "de5f7a2db9d883392ce3ad667087280fe1ff9cea" |
|
| 814 |
- }, |
|
| 815 |
- {
|
|
| 816 |
- "ImportPath": "github.com/prometheus/client_golang/prometheus", |
|
| 817 |
- "Comment": "0.2.0-5-gde5f7a2", |
|
| 818 |
- "Rev": "de5f7a2db9d883392ce3ad667087280fe1ff9cea" |
|
| 819 |
- }, |
|
| 820 |
- {
|
|
| 821 |
- "ImportPath": "github.com/prometheus/client_golang/text", |
|
| 822 |
- "Comment": "0.2.0-5-gde5f7a2", |
|
| 823 |
- "Rev": "de5f7a2db9d883392ce3ad667087280fe1ff9cea" |
|
| 824 |
- }, |
|
| 825 |
- {
|
|
| 826 |
- "ImportPath": "github.com/prometheus/client_model/go", |
|
| 827 |
- "Comment": "model-0.0.2-12-gfa8ad6f", |
|
| 828 |
- "Rev": "fa8ad6fec33561be4280a8f0514318c79d7f6cb6" |
|
| 829 |
- }, |
|
| 830 |
- {
|
|
| 831 |
- "ImportPath": "github.com/prometheus/procfs", |
|
| 832 |
- "Rev": "6c34ef819e19b4e16f410100ace4aa006f0e3bf8" |
|
| 833 |
- }, |
|
| 834 |
- {
|
|
| 835 |
- "ImportPath": "github.com/skynetservices/skydns/backends/etcd", |
|
| 836 |
- "Comment": "2.0.1d-54-g5c2bf88", |
|
| 837 |
- "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 838 |
- }, |
|
| 839 |
- {
|
|
| 840 |
- "ImportPath": "github.com/skynetservices/skydns/cache", |
|
| 841 |
- "Comment": "2.0.1d-54-g5c2bf88", |
|
| 842 |
- "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 843 |
- }, |
|
| 844 |
- {
|
|
| 845 |
- "ImportPath": "github.com/skynetservices/skydns/msg", |
|
| 846 |
- "Comment": "2.0.1d-54-g5c2bf88", |
|
| 847 |
- "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 848 |
- }, |
|
| 849 |
- {
|
|
| 850 |
- "ImportPath": "github.com/skynetservices/skydns/server", |
|
| 851 |
- "Comment": "2.0.1d-54-g5c2bf88", |
|
| 852 |
- "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 853 |
- }, |
|
| 854 |
- {
|
|
| 855 |
- "ImportPath": "github.com/spf13/cobra", |
|
| 856 |
- "Rev": "79bd93d369fb73d640179208d4e2b1a748915567" |
|
| 857 |
- }, |
|
| 858 |
- {
|
|
| 859 |
- "ImportPath": "github.com/spf13/pflag", |
|
| 860 |
- "Rev": "11b7cf8387a31f278486eaad758162830eca8c73" |
|
| 861 |
- }, |
|
| 862 |
- {
|
|
| 863 |
- "ImportPath": "github.com/stretchr/objx", |
|
| 864 |
- "Rev": "d40df0cc104c06eae2dfe03d7dddb83802d52f9a" |
|
| 865 |
- }, |
|
| 866 |
- {
|
|
| 867 |
- "ImportPath": "github.com/stretchr/testify/assert", |
|
| 868 |
- "Rev": "e4ec8152c15fc46bd5056ce65997a07c7d415325" |
|
| 869 |
- }, |
|
| 870 |
- {
|
|
| 871 |
- "ImportPath": "github.com/stretchr/testify/mock", |
|
| 872 |
- "Rev": "e4ec8152c15fc46bd5056ce65997a07c7d415325" |
|
| 873 |
- }, |
|
| 874 |
- {
|
|
| 875 |
- "ImportPath": "golang.org/x/net/context", |
|
| 876 |
- "Rev": "cbcac7bb8415db9b6cb4d1ebab1dc9afbd688b97" |
|
| 877 |
- }, |
|
| 878 |
- {
|
|
| 879 |
- "ImportPath": "golang.org/x/net/html", |
|
| 880 |
- "Rev": "cbcac7bb8415db9b6cb4d1ebab1dc9afbd688b97" |
|
| 881 |
- }, |
|
| 882 |
- {
|
|
| 883 |
- "ImportPath": "golang.org/x/net/websocket", |
|
| 884 |
- "Rev": "cbcac7bb8415db9b6cb4d1ebab1dc9afbd688b97" |
|
| 885 |
- }, |
|
| 886 |
- {
|
|
| 887 |
- "ImportPath": "golang.org/x/oauth2", |
|
| 888 |
- "Rev": "2e66694fea36dc820636630792a55cdc6987e05b" |
|
| 889 |
- }, |
|
| 890 |
- {
|
|
| 891 |
- "ImportPath": "google.golang.org/appengine", |
|
| 892 |
- "Rev": "6aa67407028217c352e215f5af320a429d0bcf5f" |
|
| 893 |
- }, |
|
| 894 |
- {
|
|
| 895 |
- "ImportPath": "google.golang.org/cloud/compute/metadata", |
|
| 896 |
- "Rev": "2e43671e4ad874a7bca65746ff3edb38e6e93762" |
|
| 897 |
- }, |
|
| 898 |
- {
|
|
| 899 |
- "ImportPath": "google.golang.org/cloud/internal", |
|
| 900 |
- "Rev": "2e43671e4ad874a7bca65746ff3edb38e6e93762" |
|
| 901 |
- }, |
|
| 902 |
- {
|
|
| 903 |
- "ImportPath": "gopkg.in/yaml.v2", |
|
| 904 |
- "Rev": "d466437aa4adc35830964cffc5b5f262c63ddcb4" |
|
| 905 |
- }, |
|
| 906 |
- {
|
|
| 907 |
- "ImportPath": "speter.net/go/exp/math/dec/inf", |
|
| 908 |
- "Rev": "42ca6cd68aa922bc3f32f1e056e61b65945d9ad7" |
|
| 909 |
- } |
|
| 910 |
- ] |
|
| 2 |
+ "ImportPath": "github.com/openshift/origin", |
|
| 3 |
+ "GoVersion": "go1.3.1", |
|
| 4 |
+ "Packages": [ |
|
| 5 |
+ "./..." |
|
| 6 |
+ ], |
|
| 7 |
+ "Deps": [ |
|
| 8 |
+ {
|
|
| 9 |
+ "ImportPath": "bitbucket.org/ww/goautoneg", |
|
| 10 |
+ "Comment": "null-5", |
|
| 11 |
+ "Rev": "75cd24fc2f2c2a2088577d12123ddee5f54e0675" |
|
| 12 |
+ }, |
|
| 13 |
+ {
|
|
| 14 |
+ "ImportPath": "code.google.com/p/go-uuid/uuid", |
|
| 15 |
+ "Comment": "null-12", |
|
| 16 |
+ "Rev": "7dda39b2e7d5e265014674c5af696ba4186679e9" |
|
| 17 |
+ }, |
|
| 18 |
+ {
|
|
| 19 |
+ "ImportPath": "code.google.com/p/go.exp/inotify", |
|
| 20 |
+ "Comment": "null-75", |
|
| 21 |
+ "Rev": "bd8df7009305d6ada223ea3c95b94c0f38bfa119" |
|
| 22 |
+ }, |
|
| 23 |
+ {
|
|
| 24 |
+ "ImportPath": "code.google.com/p/go.net/spdy", |
|
| 25 |
+ "Comment": "null-240", |
|
| 26 |
+ "Rev": "937a34c9de13c766c814510f76bca091dee06028" |
|
| 27 |
+ }, |
|
| 28 |
+ {
|
|
| 29 |
+ "ImportPath": "code.google.com/p/goauth2/oauth", |
|
| 30 |
+ "Comment": "weekly-50", |
|
| 31 |
+ "Rev": "7fc9d958c83464bd7650240569bf93a102266e6a" |
|
| 32 |
+ }, |
|
| 33 |
+ {
|
|
| 34 |
+ "ImportPath": "code.google.com/p/google-api-go-client/compute/v1", |
|
| 35 |
+ "Comment": "release-105", |
|
| 36 |
+ "Rev": "98c78185197025f935947caac56a7b6d022f89d2" |
|
| 37 |
+ }, |
|
| 38 |
+ {
|
|
| 39 |
+ "ImportPath": "code.google.com/p/google-api-go-client/container/v1beta1", |
|
| 40 |
+ "Comment": "release-105", |
|
| 41 |
+ "Rev": "98c78185197025f935947caac56a7b6d022f89d2" |
|
| 42 |
+ }, |
|
| 43 |
+ {
|
|
| 44 |
+ "ImportPath": "code.google.com/p/google-api-go-client/googleapi", |
|
| 45 |
+ "Comment": "release-105", |
|
| 46 |
+ "Rev": "98c78185197025f935947caac56a7b6d022f89d2" |
|
| 47 |
+ }, |
|
| 48 |
+ {
|
|
| 49 |
+ "ImportPath": "github.com/AdRoll/goamz/aws", |
|
| 50 |
+ "Rev": "c73835dc8fc6958baf8df8656864ee4d6d04b130" |
|
| 51 |
+ }, |
|
| 52 |
+ {
|
|
| 53 |
+ "ImportPath": "github.com/AdRoll/goamz/s3", |
|
| 54 |
+ "Rev": "c73835dc8fc6958baf8df8656864ee4d6d04b130" |
|
| 55 |
+ }, |
|
| 56 |
+ {
|
|
| 57 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/admission", |
|
| 58 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 59 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 60 |
+ }, |
|
| 61 |
+ {
|
|
| 62 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/api", |
|
| 63 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 64 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 65 |
+ }, |
|
| 66 |
+ {
|
|
| 67 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver", |
|
| 68 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 69 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 70 |
+ }, |
|
| 71 |
+ {
|
|
| 72 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/authenticator", |
|
| 73 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 74 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 75 |
+ }, |
|
| 76 |
+ {
|
|
| 77 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/authorizer", |
|
| 78 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 79 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 80 |
+ }, |
|
| 81 |
+ {
|
|
| 82 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/handlers", |
|
| 83 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 84 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 85 |
+ }, |
|
| 86 |
+ {
|
|
| 87 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/auth/user", |
|
| 88 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 89 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 90 |
+ }, |
|
| 91 |
+ {
|
|
| 92 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/capabilities", |
|
| 93 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 94 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 95 |
+ }, |
|
| 96 |
+ {
|
|
| 97 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/client", |
|
| 98 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 99 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 100 |
+ }, |
|
| 101 |
+ {
|
|
| 102 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/clientauth", |
|
| 103 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 104 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 105 |
+ }, |
|
| 106 |
+ {
|
|
| 107 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider", |
|
| 108 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 109 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 110 |
+ }, |
|
| 111 |
+ {
|
|
| 112 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/controller", |
|
| 113 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 114 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 115 |
+ }, |
|
| 116 |
+ {
|
|
| 117 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/conversion", |
|
| 118 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 119 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 120 |
+ }, |
|
| 121 |
+ {
|
|
| 122 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/credentialprovider", |
|
| 123 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 124 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 125 |
+ }, |
|
| 126 |
+ {
|
|
| 127 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/fields", |
|
| 128 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 129 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 130 |
+ }, |
|
| 131 |
+ {
|
|
| 132 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/healthz", |
|
| 133 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 134 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 135 |
+ }, |
|
| 136 |
+ {
|
|
| 137 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/httplog", |
|
| 138 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 139 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 140 |
+ }, |
|
| 141 |
+ {
|
|
| 142 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl", |
|
| 143 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 144 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 145 |
+ }, |
|
| 146 |
+ {
|
|
| 147 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet", |
|
| 148 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 149 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 150 |
+ }, |
|
| 151 |
+ {
|
|
| 152 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/labels", |
|
| 153 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 154 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 155 |
+ }, |
|
| 156 |
+ {
|
|
| 157 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/master", |
|
| 158 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 159 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 160 |
+ }, |
|
| 161 |
+ {
|
|
| 162 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/probe", |
|
| 163 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 164 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 165 |
+ }, |
|
| 166 |
+ {
|
|
| 167 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/proxy", |
|
| 168 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 169 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 170 |
+ }, |
|
| 171 |
+ {
|
|
| 172 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/controller", |
|
| 173 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 174 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 175 |
+ }, |
|
| 176 |
+ {
|
|
| 177 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/endpoint", |
|
| 178 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 179 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 180 |
+ }, |
|
| 181 |
+ {
|
|
| 182 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/etcd", |
|
| 183 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 184 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 185 |
+ }, |
|
| 186 |
+ {
|
|
| 187 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/event", |
|
| 188 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 189 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 190 |
+ }, |
|
| 191 |
+ {
|
|
| 192 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic", |
|
| 193 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 194 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 195 |
+ }, |
|
| 196 |
+ {
|
|
| 197 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/limitrange", |
|
| 198 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 199 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 200 |
+ }, |
|
| 201 |
+ {
|
|
| 202 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/minion", |
|
| 203 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 204 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 205 |
+ }, |
|
| 206 |
+ {
|
|
| 207 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/namespace", |
|
| 208 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 209 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 210 |
+ }, |
|
| 211 |
+ {
|
|
| 212 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/pod", |
|
| 213 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 214 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 215 |
+ }, |
|
| 216 |
+ {
|
|
| 217 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/resourcequota", |
|
| 218 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 219 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 220 |
+ }, |
|
| 221 |
+ {
|
|
| 222 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/secret", |
|
| 223 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 224 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 225 |
+ }, |
|
| 226 |
+ {
|
|
| 227 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/service", |
|
| 228 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 229 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 230 |
+ }, |
|
| 231 |
+ {
|
|
| 232 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/resourcequota", |
|
| 233 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 234 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 235 |
+ }, |
|
| 236 |
+ {
|
|
| 237 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime", |
|
| 238 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 239 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 240 |
+ }, |
|
| 241 |
+ {
|
|
| 242 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/scheduler", |
|
| 243 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 244 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 245 |
+ }, |
|
| 246 |
+ {
|
|
| 247 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/service", |
|
| 248 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 249 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 250 |
+ }, |
|
| 251 |
+ {
|
|
| 252 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/tools", |
|
| 253 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 254 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 255 |
+ }, |
|
| 256 |
+ {
|
|
| 257 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/types", |
|
| 258 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 259 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 260 |
+ }, |
|
| 261 |
+ {
|
|
| 262 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/ui", |
|
| 263 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 264 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 265 |
+ }, |
|
| 266 |
+ {
|
|
| 267 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/util", |
|
| 268 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 269 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 270 |
+ }, |
|
| 271 |
+ {
|
|
| 272 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/version", |
|
| 273 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 274 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 275 |
+ }, |
|
| 276 |
+ {
|
|
| 277 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/volume", |
|
| 278 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 279 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 280 |
+ }, |
|
| 281 |
+ {
|
|
| 282 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/pkg/watch", |
|
| 283 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 284 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 285 |
+ }, |
|
| 286 |
+ {
|
|
| 287 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/admit", |
|
| 288 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 289 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 290 |
+ }, |
|
| 291 |
+ {
|
|
| 292 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/limitranger", |
|
| 293 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 294 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 295 |
+ }, |
|
| 296 |
+ {
|
|
| 297 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/namespace/exists", |
|
| 298 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 299 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 300 |
+ }, |
|
| 301 |
+ {
|
|
| 302 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/namespace/lifecycle", |
|
| 303 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 304 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 305 |
+ }, |
|
| 306 |
+ {
|
|
| 307 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/resourcedefaults", |
|
| 308 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 309 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 310 |
+ }, |
|
| 311 |
+ {
|
|
| 312 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/resourcequota", |
|
| 313 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 314 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 315 |
+ }, |
|
| 316 |
+ {
|
|
| 317 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/auth/authenticator/token/tokenfile", |
|
| 318 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 319 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 320 |
+ }, |
|
| 321 |
+ {
|
|
| 322 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler", |
|
| 323 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 324 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 325 |
+ }, |
|
| 326 |
+ {
|
|
| 327 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/api", |
|
| 328 |
+ "Comment": "v0.12.0-1094-gcb7c781", |
|
| 329 |
+ "Rev": "cb7c781da50a2f248f84f6407fe50479f625052f" |
|
| 330 |
+ }, |
|
| 331 |
+ {
|
|
| 332 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/algorithmprovider", |
|
| 333 |
+ "Comment": "v0.12.0-1094-gcb7c781", |
|
| 334 |
+ "Rev": "cb7c781da50a2f248f84f6407fe50479f625052f" |
|
| 335 |
+ }, |
|
| 336 |
+ {
|
|
| 337 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/factory", |
|
| 338 |
+ "Comment": "v0.12.0-1094-gcb7c781", |
|
| 339 |
+ "Rev": "cb7c781da50a2f248f84f6407fe50479f625052f" |
|
| 340 |
+ }, |
|
| 341 |
+ {
|
|
| 342 |
+ "ImportPath": "github.com/GoogleCloudPlatform/kubernetes/third_party/golang/netutil", |
|
| 343 |
+ "Comment": "v0.13.1-dev-641-gf057a25", |
|
| 344 |
+ "Rev": "f057a25b5d37a496c1ce25fbe1dc1b1971266240" |
|
| 345 |
+ }, |
|
| 346 |
+ {
|
|
| 347 |
+ "ImportPath": "github.com/RangelReale/osin", |
|
| 348 |
+ "Rev": "1f4e9754a8931fbd9834ab11592f358418efc9ff" |
|
| 349 |
+ }, |
|
| 350 |
+ {
|
|
| 351 |
+ "ImportPath": "github.com/RangelReale/osincli", |
|
| 352 |
+ "Rev": "23618ea0fc3faa3f43954ce8ff48e31f5c784212" |
|
| 353 |
+ }, |
|
| 354 |
+ {
|
|
| 355 |
+ "ImportPath": "github.com/Sirupsen/logrus", |
|
| 356 |
+ "Comment": "v0.6.6-2-g2cea0f0", |
|
| 357 |
+ "Rev": "2cea0f0d141f56fae06df5b813ec4119d1c8ccbd" |
|
| 358 |
+ }, |
|
| 359 |
+ {
|
|
| 360 |
+ "ImportPath": "github.com/abbot/go-http-auth", |
|
| 361 |
+ "Rev": "c0ef4539dfab4d21c8ef20ba2924f9fc6f186d35" |
|
| 362 |
+ }, |
|
| 363 |
+ {
|
|
| 364 |
+ "ImportPath": "github.com/awalterschulze/gographviz", |
|
| 365 |
+ "Rev": "20d1f693416d9be045340150094aa42035a41c9e" |
|
| 366 |
+ }, |
|
| 367 |
+ {
|
|
| 368 |
+ "ImportPath": "github.com/beorn7/perks/quantile", |
|
| 369 |
+ "Rev": "b965b613227fddccbfffe13eae360ed3fa822f8d" |
|
| 370 |
+ }, |
|
| 371 |
+ {
|
|
| 372 |
+ "ImportPath": "github.com/coreos/etcd/config", |
|
| 373 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 374 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 375 |
+ }, |
|
| 376 |
+ {
|
|
| 377 |
+ "ImportPath": "github.com/coreos/etcd/discovery", |
|
| 378 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 379 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 380 |
+ }, |
|
| 381 |
+ {
|
|
| 382 |
+ "ImportPath": "github.com/coreos/etcd/error", |
|
| 383 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 384 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 385 |
+ }, |
|
| 386 |
+ {
|
|
| 387 |
+ "ImportPath": "github.com/coreos/etcd/etcd", |
|
| 388 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 389 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 390 |
+ }, |
|
| 391 |
+ {
|
|
| 392 |
+ "ImportPath": "github.com/coreos/etcd/http", |
|
| 393 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 394 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 395 |
+ }, |
|
| 396 |
+ {
|
|
| 397 |
+ "ImportPath": "github.com/coreos/etcd/log", |
|
| 398 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 399 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 400 |
+ }, |
|
| 401 |
+ {
|
|
| 402 |
+ "ImportPath": "github.com/coreos/etcd/metrics", |
|
| 403 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 404 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 405 |
+ }, |
|
| 406 |
+ {
|
|
| 407 |
+ "ImportPath": "github.com/coreos/etcd/mod", |
|
| 408 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 409 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 410 |
+ }, |
|
| 411 |
+ {
|
|
| 412 |
+ "ImportPath": "github.com/coreos/etcd/pkg/btrfs", |
|
| 413 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 414 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 415 |
+ }, |
|
| 416 |
+ {
|
|
| 417 |
+ "ImportPath": "github.com/coreos/etcd/pkg/http", |
|
| 418 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 419 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 420 |
+ }, |
|
| 421 |
+ {
|
|
| 422 |
+ "ImportPath": "github.com/coreos/etcd/pkg/strings", |
|
| 423 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 424 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 425 |
+ }, |
|
| 426 |
+ {
|
|
| 427 |
+ "ImportPath": "github.com/coreos/etcd/server", |
|
| 428 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 429 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 430 |
+ }, |
|
| 431 |
+ {
|
|
| 432 |
+ "ImportPath": "github.com/coreos/etcd/store", |
|
| 433 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 434 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 435 |
+ }, |
|
| 436 |
+ {
|
|
| 437 |
+ "ImportPath": "github.com/coreos/etcd/third_party/bitbucket.org/kardianos/osext", |
|
| 438 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 439 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 440 |
+ }, |
|
| 441 |
+ {
|
|
| 442 |
+ "ImportPath": "github.com/coreos/etcd/third_party/code.google.com/p/gogoprotobuf/proto", |
|
| 443 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 444 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 445 |
+ }, |
|
| 446 |
+ {
|
|
| 447 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/BurntSushi/toml", |
|
| 448 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 449 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 450 |
+ }, |
|
| 451 |
+ {
|
|
| 452 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/coreos/go-etcd/etcd", |
|
| 453 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 454 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 455 |
+ }, |
|
| 456 |
+ {
|
|
| 457 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/coreos/go-log/log", |
|
| 458 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 459 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 460 |
+ }, |
|
| 461 |
+ {
|
|
| 462 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/coreos/go-systemd/journal", |
|
| 463 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 464 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 465 |
+ }, |
|
| 466 |
+ {
|
|
| 467 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/goraft/raft", |
|
| 468 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 469 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 470 |
+ }, |
|
| 471 |
+ {
|
|
| 472 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/gorilla/context", |
|
| 473 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 474 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 475 |
+ }, |
|
| 476 |
+ {
|
|
| 477 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/gorilla/mux", |
|
| 478 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 479 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 480 |
+ }, |
|
| 481 |
+ {
|
|
| 482 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/mreiferson/go-httpclient", |
|
| 483 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 484 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 485 |
+ }, |
|
| 486 |
+ {
|
|
| 487 |
+ "ImportPath": "github.com/coreos/etcd/third_party/github.com/rcrowley/go-metrics", |
|
| 488 |
+ "Comment": "v0.4.3-7-gfc2afe1", |
|
| 489 |
+ "Rev": "fc2afe1ed2510d3c8c9ff41fc36d0da2c929a1c7" |
|
| 490 |
+ }, |
|
| 491 |
+ {
|
|
| 492 |
+ "ImportPath": "github.com/coreos/go-etcd/etcd", |
|
| 493 |
+ "Comment": "v0.2.0-rc1-120-g23142f6", |
|
| 494 |
+ "Rev": "23142f6773a676cc2cae8dd0cb90b2ea761c853f" |
|
| 495 |
+ }, |
|
| 496 |
+ {
|
|
| 497 |
+ "ImportPath": "github.com/coreos/go-systemd/activation", |
|
| 498 |
+ "Comment": "v2-27-g97e243d", |
|
| 499 |
+ "Rev": "97e243d21a8e232e9d8af38ba2366dfcfceebeba" |
|
| 500 |
+ }, |
|
| 501 |
+ {
|
|
| 502 |
+ "ImportPath": "github.com/coreos/go-systemd/daemon", |
|
| 503 |
+ "Comment": "v2-27-g97e243d", |
|
| 504 |
+ "Rev": "97e243d21a8e232e9d8af38ba2366dfcfceebeba" |
|
| 505 |
+ }, |
|
| 506 |
+ {
|
|
| 507 |
+ "ImportPath": "github.com/coreos/go-systemd/dbus", |
|
| 508 |
+ "Comment": "v2-27-g97e243d", |
|
| 509 |
+ "Rev": "97e243d21a8e232e9d8af38ba2366dfcfceebeba" |
|
| 510 |
+ }, |
|
| 511 |
+ {
|
|
| 512 |
+ "ImportPath": "github.com/davecgh/go-spew/spew", |
|
| 513 |
+ "Rev": "1aaf839fb07e099361e445273993ccd9adc21b07" |
|
| 514 |
+ }, |
|
| 515 |
+ {
|
|
| 516 |
+ "ImportPath": "github.com/daviddengcn/go-colortext", |
|
| 517 |
+ "Rev": "b5c0891944c2f150ccc9d02aecf51b76c14c2948" |
|
| 518 |
+ }, |
|
| 519 |
+ {
|
|
| 520 |
+ "ImportPath": "github.com/docker/distribution", |
|
| 521 |
+ "Comment": "v2.0.0-alpha.3-30-g06fcf05", |
|
| 522 |
+ "Rev": "06fcf053e7b45aa8608c6bf32e8d3227b31d3747" |
|
| 523 |
+ }, |
|
| 524 |
+ {
|
|
| 525 |
+ "ImportPath": "github.com/docker/docker/builder/command", |
|
| 526 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 527 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 528 |
+ }, |
|
| 529 |
+ {
|
|
| 530 |
+ "ImportPath": "github.com/docker/docker/builder/parser", |
|
| 531 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 532 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 533 |
+ }, |
|
| 534 |
+ {
|
|
| 535 |
+ "ImportPath": "github.com/docker/docker/pkg/archive", |
|
| 536 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 537 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 538 |
+ }, |
|
| 539 |
+ {
|
|
| 540 |
+ "ImportPath": "github.com/docker/docker/pkg/fileutils", |
|
| 541 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 542 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 543 |
+ }, |
|
| 544 |
+ {
|
|
| 545 |
+ "ImportPath": "github.com/docker/docker/pkg/ioutils", |
|
| 546 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 547 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 548 |
+ }, |
|
| 549 |
+ {
|
|
| 550 |
+ "ImportPath": "github.com/docker/docker/pkg/mount", |
|
| 551 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 552 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 553 |
+ }, |
|
| 554 |
+ {
|
|
| 555 |
+ "ImportPath": "github.com/docker/docker/pkg/parsers", |
|
| 556 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 557 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 558 |
+ }, |
|
| 559 |
+ {
|
|
| 560 |
+ "ImportPath": "github.com/docker/docker/pkg/pools", |
|
| 561 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 562 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 563 |
+ }, |
|
| 564 |
+ {
|
|
| 565 |
+ "ImportPath": "github.com/docker/docker/pkg/promise", |
|
| 566 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 567 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 568 |
+ }, |
|
| 569 |
+ {
|
|
| 570 |
+ "ImportPath": "github.com/docker/docker/pkg/symlink", |
|
| 571 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 572 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 573 |
+ }, |
|
| 574 |
+ {
|
|
| 575 |
+ "ImportPath": "github.com/docker/docker/pkg/system", |
|
| 576 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 577 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 578 |
+ }, |
|
| 579 |
+ {
|
|
| 580 |
+ "ImportPath": "github.com/docker/docker/pkg/tarsum", |
|
| 581 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 582 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 583 |
+ }, |
|
| 584 |
+ {
|
|
| 585 |
+ "ImportPath": "github.com/docker/docker/pkg/term", |
|
| 586 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 587 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 588 |
+ }, |
|
| 589 |
+ {
|
|
| 590 |
+ "ImportPath": "github.com/docker/docker/pkg/units", |
|
| 591 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 592 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 593 |
+ }, |
|
| 594 |
+ {
|
|
| 595 |
+ "ImportPath": "github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar", |
|
| 596 |
+ "Comment": "v1.4.1-1714-ged66853", |
|
| 597 |
+ "Rev": "ed6685369740035b0af9675bf9add52d0af7657b" |
|
| 598 |
+ }, |
|
| 599 |
+ {
|
|
| 600 |
+ "ImportPath": "github.com/docker/libcontainer", |
|
| 601 |
+ "Comment": "v1.4.0-52-gd7dea0e", |
|
| 602 |
+ "Rev": "d7dea0e925315bab640115053204c16718839b1e" |
|
| 603 |
+ }, |
|
| 604 |
+ {
|
|
| 605 |
+ "ImportPath": "github.com/docker/libtrust", |
|
| 606 |
+ "Rev": "c54fbb67c1f1e68d7d6f8d2ad7c9360404616a41" |
|
| 607 |
+ }, |
|
| 608 |
+ {
|
|
| 609 |
+ "ImportPath": "github.com/docker/spdystream", |
|
| 610 |
+ "Rev": "e731c8f9f19ffd7e51a469a2de1580c1dfbb4fae" |
|
| 611 |
+ }, |
|
| 612 |
+ {
|
|
| 613 |
+ "ImportPath": "github.com/elazarl/go-bindata-assetfs", |
|
| 614 |
+ "Rev": "ae4665cf2d188c65764c73fe4af5378acc549510" |
|
| 615 |
+ }, |
|
| 616 |
+ {
|
|
| 617 |
+ "ImportPath": "github.com/emicklei/go-restful", |
|
| 618 |
+ "Comment": "v1.1.3-26-g977ac8f", |
|
| 619 |
+ "Rev": "977ac8fcbcd2ee33319246f7c91d4b426402dc70" |
|
| 620 |
+ }, |
|
| 621 |
+ {
|
|
| 622 |
+ "ImportPath": "github.com/evanphx/json-patch", |
|
| 623 |
+ "Rev": "7dd4489c2eb6073e5a9d7746c3274c5b5f0387df" |
|
| 624 |
+ }, |
|
| 625 |
+ {
|
|
| 626 |
+ "ImportPath": "github.com/fsouza/go-dockerclient", |
|
| 627 |
+ "Rev": "bd32742a065748632a860c9ffd8adf42cc4e140f" |
|
| 628 |
+ }, |
|
| 629 |
+ {
|
|
| 630 |
+ "ImportPath": "github.com/getsentry/raven-go", |
|
| 631 |
+ "Rev": "86cd4063c535cbbcbf43d84424dbd5911ab1b818" |
|
| 632 |
+ }, |
|
| 633 |
+ {
|
|
| 634 |
+ "ImportPath": "github.com/ghodss/yaml", |
|
| 635 |
+ "Rev": "588cb435e59ee8b6c2795482887755841ad67207" |
|
| 636 |
+ }, |
|
| 637 |
+ {
|
|
| 638 |
+ "ImportPath": "github.com/godbus/dbus", |
|
| 639 |
+ "Comment": "0-7-g939230d", |
|
| 640 |
+ "Rev": "939230d2086a4f1870e04c52e0a376c25bae0ec4" |
|
| 641 |
+ }, |
|
| 642 |
+ {
|
|
| 643 |
+ "ImportPath": "github.com/golang/glog", |
|
| 644 |
+ "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" |
|
| 645 |
+ }, |
|
| 646 |
+ {
|
|
| 647 |
+ "ImportPath": "github.com/golang/groupcache/lru", |
|
| 648 |
+ "Rev": "604ed5785183e59ae2789449d89e73f3a2a77987" |
|
| 649 |
+ }, |
|
| 650 |
+ {
|
|
| 651 |
+ "ImportPath": "github.com/golang/protobuf/proto", |
|
| 652 |
+ "Rev": "7f07925444bb51fa4cf9dfe6f7661876f8852275" |
|
| 653 |
+ }, |
|
| 654 |
+ {
|
|
| 655 |
+ "ImportPath": "github.com/google/cadvisor/api", |
|
| 656 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 657 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 658 |
+ }, |
|
| 659 |
+ {
|
|
| 660 |
+ "ImportPath": "github.com/google/cadvisor/container", |
|
| 661 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 662 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 663 |
+ }, |
|
| 664 |
+ {
|
|
| 665 |
+ "ImportPath": "github.com/google/cadvisor/events", |
|
| 666 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 667 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 668 |
+ }, |
|
| 669 |
+ {
|
|
| 670 |
+ "ImportPath": "github.com/google/cadvisor/fs", |
|
| 671 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 672 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 673 |
+ }, |
|
| 674 |
+ {
|
|
| 675 |
+ "ImportPath": "github.com/google/cadvisor/healthz", |
|
| 676 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 677 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 678 |
+ }, |
|
| 679 |
+ {
|
|
| 680 |
+ "ImportPath": "github.com/google/cadvisor/http", |
|
| 681 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 682 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 683 |
+ }, |
|
| 684 |
+ {
|
|
| 685 |
+ "ImportPath": "github.com/google/cadvisor/info/v1", |
|
| 686 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 687 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 688 |
+ }, |
|
| 689 |
+ {
|
|
| 690 |
+ "ImportPath": "github.com/google/cadvisor/info/v2", |
|
| 691 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 692 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 693 |
+ }, |
|
| 694 |
+ {
|
|
| 695 |
+ "ImportPath": "github.com/google/cadvisor/manager", |
|
| 696 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 697 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 698 |
+ }, |
|
| 699 |
+ {
|
|
| 700 |
+ "ImportPath": "github.com/google/cadvisor/metrics", |
|
| 701 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 702 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 703 |
+ }, |
|
| 704 |
+ {
|
|
| 705 |
+ "ImportPath": "github.com/google/cadvisor/pages", |
|
| 706 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 707 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 708 |
+ }, |
|
| 709 |
+ {
|
|
| 710 |
+ "ImportPath": "github.com/google/cadvisor/storage", |
|
| 711 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 712 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 713 |
+ }, |
|
| 714 |
+ {
|
|
| 715 |
+ "ImportPath": "github.com/google/cadvisor/summary", |
|
| 716 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 717 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 718 |
+ }, |
|
| 719 |
+ {
|
|
| 720 |
+ "ImportPath": "github.com/google/cadvisor/utils", |
|
| 721 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 722 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 723 |
+ }, |
|
| 724 |
+ {
|
|
| 725 |
+ "ImportPath": "github.com/google/cadvisor/validate", |
|
| 726 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 727 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 728 |
+ }, |
|
| 729 |
+ {
|
|
| 730 |
+ "ImportPath": "github.com/google/cadvisor/version", |
|
| 731 |
+ "Comment": "0.10.1-106-gfd9f7e0", |
|
| 732 |
+ "Rev": "fd9f7e0e820c7916e052e2180ee51e5ef8ad6614" |
|
| 733 |
+ }, |
|
| 734 |
+ {
|
|
| 735 |
+ "ImportPath": "github.com/google/gofuzz", |
|
| 736 |
+ "Rev": "bbcb9da2d746f8bdbd6a936686a0a6067ada0ec5" |
|
| 737 |
+ }, |
|
| 738 |
+ {
|
|
| 739 |
+ "ImportPath": "github.com/gorilla/context", |
|
| 740 |
+ "Rev": "215affda49addc4c8ef7e2534915df2c8c35c6cd" |
|
| 741 |
+ }, |
|
| 742 |
+ {
|
|
| 743 |
+ "ImportPath": "github.com/gorilla/handlers", |
|
| 744 |
+ "Rev": "4ef72b2795a418935d497c8db213080be06f8850" |
|
| 745 |
+ }, |
|
| 746 |
+ {
|
|
| 747 |
+ "ImportPath": "github.com/gorilla/mux", |
|
| 748 |
+ "Rev": "8096f47503459bcc74d1f4c487b7e6e42e5746b5" |
|
| 749 |
+ }, |
|
| 750 |
+ {
|
|
| 751 |
+ "ImportPath": "github.com/gorilla/securecookie", |
|
| 752 |
+ "Rev": "1b0c7f6e9ab3d7f500fd7d50c7ad835ff428139b" |
|
| 753 |
+ }, |
|
| 754 |
+ {
|
|
| 755 |
+ "ImportPath": "github.com/gorilla/sessions", |
|
| 756 |
+ "Rev": "aa5e036e6c44aec69a32eb41097001978b29ad31" |
|
| 757 |
+ }, |
|
| 758 |
+ {
|
|
| 759 |
+ "ImportPath": "github.com/imdario/mergo", |
|
| 760 |
+ "Comment": "0.1.3-8-g6633656", |
|
| 761 |
+ "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" |
|
| 762 |
+ }, |
|
| 763 |
+ {
|
|
| 764 |
+ "ImportPath": "github.com/jteeuwen/go-bindata", |
|
| 765 |
+ "Comment": "v3.0.7-2-gf94581b", |
|
| 766 |
+ "Rev": "f94581bd91620d0ccd9c22bb1d2de13f6a605857" |
|
| 767 |
+ }, |
|
| 768 |
+ {
|
|
| 769 |
+ "ImportPath": "github.com/kr/pty", |
|
| 770 |
+ "Comment": "release.r56-25-g05017fc", |
|
| 771 |
+ "Rev": "05017fcccf23c823bfdea560dcc958a136e54fb7" |
|
| 772 |
+ }, |
|
| 773 |
+ {
|
|
| 774 |
+ "ImportPath": "github.com/matttproud/golang_protobuf_extensions/ext", |
|
| 775 |
+ "Rev": "ba7d65ac66e9da93a714ca18f6d1bc7a0c09100c" |
|
| 776 |
+ }, |
|
| 777 |
+ {
|
|
| 778 |
+ "ImportPath": "github.com/miekg/dns", |
|
| 779 |
+ "Rev": "3f504e8dabd5d562e997d19ce0200aa41973e1b2" |
|
| 780 |
+ }, |
|
| 781 |
+ {
|
|
| 782 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/api", |
|
| 783 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 784 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 785 |
+ }, |
|
| 786 |
+ {
|
|
| 787 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/build", |
|
| 788 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 789 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 790 |
+ }, |
|
| 791 |
+ {
|
|
| 792 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/docker", |
|
| 793 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 794 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 795 |
+ }, |
|
| 796 |
+ {
|
|
| 797 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/errors", |
|
| 798 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 799 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 800 |
+ }, |
|
| 801 |
+ {
|
|
| 802 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/git", |
|
| 803 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 804 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 805 |
+ }, |
|
| 806 |
+ {
|
|
| 807 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/scripts", |
|
| 808 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 809 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 810 |
+ }, |
|
| 811 |
+ {
|
|
| 812 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/tar", |
|
| 813 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 814 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 815 |
+ }, |
|
| 816 |
+ {
|
|
| 817 |
+ "ImportPath": "github.com/openshift/source-to-image/pkg/util", |
|
| 818 |
+ "Comment": "v0.2-8-gc0c154e", |
|
| 819 |
+ "Rev": "c0c154efcba27ea5693c428bfe28560c220b4850" |
|
| 820 |
+ }, |
|
| 821 |
+ {
|
|
| 822 |
+ "ImportPath": "github.com/pkg/profile", |
|
| 823 |
+ "Rev": "c795610ec6e479e5795f7852db65ea15073674a6" |
|
| 824 |
+ }, |
|
| 825 |
+ {
|
|
| 826 |
+ "ImportPath": "github.com/prometheus/client_golang/model", |
|
| 827 |
+ "Comment": "0.2.0-5-gde5f7a2", |
|
| 828 |
+ "Rev": "de5f7a2db9d883392ce3ad667087280fe1ff9cea" |
|
| 829 |
+ }, |
|
| 830 |
+ {
|
|
| 831 |
+ "ImportPath": "github.com/prometheus/client_golang/prometheus", |
|
| 832 |
+ "Comment": "0.2.0-5-gde5f7a2", |
|
| 833 |
+ "Rev": "de5f7a2db9d883392ce3ad667087280fe1ff9cea" |
|
| 834 |
+ }, |
|
| 835 |
+ {
|
|
| 836 |
+ "ImportPath": "github.com/prometheus/client_golang/text", |
|
| 837 |
+ "Comment": "0.2.0-5-gde5f7a2", |
|
| 838 |
+ "Rev": "de5f7a2db9d883392ce3ad667087280fe1ff9cea" |
|
| 839 |
+ }, |
|
| 840 |
+ {
|
|
| 841 |
+ "ImportPath": "github.com/prometheus/client_model/go", |
|
| 842 |
+ "Comment": "model-0.0.2-12-gfa8ad6f", |
|
| 843 |
+ "Rev": "fa8ad6fec33561be4280a8f0514318c79d7f6cb6" |
|
| 844 |
+ }, |
|
| 845 |
+ {
|
|
| 846 |
+ "ImportPath": "github.com/prometheus/procfs", |
|
| 847 |
+ "Rev": "6c34ef819e19b4e16f410100ace4aa006f0e3bf8" |
|
| 848 |
+ }, |
|
| 849 |
+ {
|
|
| 850 |
+ "ImportPath": "github.com/skynetservices/skydns/backends/etcd", |
|
| 851 |
+ "Comment": "2.0.1d-54-g5c2bf88", |
|
| 852 |
+ "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 853 |
+ }, |
|
| 854 |
+ {
|
|
| 855 |
+ "ImportPath": "github.com/skynetservices/skydns/cache", |
|
| 856 |
+ "Comment": "2.0.1d-54-g5c2bf88", |
|
| 857 |
+ "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 858 |
+ }, |
|
| 859 |
+ {
|
|
| 860 |
+ "ImportPath": "github.com/skynetservices/skydns/msg", |
|
| 861 |
+ "Comment": "2.0.1d-54-g5c2bf88", |
|
| 862 |
+ "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 863 |
+ }, |
|
| 864 |
+ {
|
|
| 865 |
+ "ImportPath": "github.com/skynetservices/skydns/server", |
|
| 866 |
+ "Comment": "2.0.1d-54-g5c2bf88", |
|
| 867 |
+ "Rev": "5c2bf889497b9857586b4fd6703fdc1b7d5638bd" |
|
| 868 |
+ }, |
|
| 869 |
+ {
|
|
| 870 |
+ "ImportPath": "github.com/spf13/cobra", |
|
| 871 |
+ "Rev": "79bd93d369fb73d640179208d4e2b1a748915567" |
|
| 872 |
+ }, |
|
| 873 |
+ {
|
|
| 874 |
+ "ImportPath": "github.com/spf13/pflag", |
|
| 875 |
+ "Rev": "11b7cf8387a31f278486eaad758162830eca8c73" |
|
| 876 |
+ }, |
|
| 877 |
+ {
|
|
| 878 |
+ "ImportPath": "github.com/stretchr/objx", |
|
| 879 |
+ "Rev": "d40df0cc104c06eae2dfe03d7dddb83802d52f9a" |
|
| 880 |
+ }, |
|
| 881 |
+ {
|
|
| 882 |
+ "ImportPath": "github.com/stretchr/testify/assert", |
|
| 883 |
+ "Rev": "e4ec8152c15fc46bd5056ce65997a07c7d415325" |
|
| 884 |
+ }, |
|
| 885 |
+ {
|
|
| 886 |
+ "ImportPath": "github.com/stretchr/testify/mock", |
|
| 887 |
+ "Rev": "e4ec8152c15fc46bd5056ce65997a07c7d415325" |
|
| 888 |
+ }, |
|
| 889 |
+ {
|
|
| 890 |
+ "ImportPath": "golang.org/x/net/context", |
|
| 891 |
+ "Rev": "cbcac7bb8415db9b6cb4d1ebab1dc9afbd688b97" |
|
| 892 |
+ }, |
|
| 893 |
+ {
|
|
| 894 |
+ "ImportPath": "golang.org/x/net/html", |
|
| 895 |
+ "Rev": "cbcac7bb8415db9b6cb4d1ebab1dc9afbd688b97" |
|
| 896 |
+ }, |
|
| 897 |
+ {
|
|
| 898 |
+ "ImportPath": "golang.org/x/net/websocket", |
|
| 899 |
+ "Rev": "cbcac7bb8415db9b6cb4d1ebab1dc9afbd688b97" |
|
| 900 |
+ }, |
|
| 901 |
+ {
|
|
| 902 |
+ "ImportPath": "golang.org/x/oauth2", |
|
| 903 |
+ "Rev": "2e66694fea36dc820636630792a55cdc6987e05b" |
|
| 904 |
+ }, |
|
| 905 |
+ {
|
|
| 906 |
+ "ImportPath": "google.golang.org/appengine", |
|
| 907 |
+ "Rev": "6aa67407028217c352e215f5af320a429d0bcf5f" |
|
| 908 |
+ }, |
|
| 909 |
+ {
|
|
| 910 |
+ "ImportPath": "google.golang.org/cloud/compute/metadata", |
|
| 911 |
+ "Rev": "2e43671e4ad874a7bca65746ff3edb38e6e93762" |
|
| 912 |
+ }, |
|
| 913 |
+ {
|
|
| 914 |
+ "ImportPath": "google.golang.org/cloud/internal", |
|
| 915 |
+ "Rev": "2e43671e4ad874a7bca65746ff3edb38e6e93762" |
|
| 916 |
+ }, |
|
| 917 |
+ {
|
|
| 918 |
+ "ImportPath": "gopkg.in/yaml.v2", |
|
| 919 |
+ "Rev": "d466437aa4adc35830964cffc5b5f262c63ddcb4" |
|
| 920 |
+ }, |
|
| 921 |
+ {
|
|
| 922 |
+ "ImportPath": "speter.net/go/exp/math/dec/inf", |
|
| 923 |
+ "Rev": "42ca6cd68aa922bc3f32f1e056e61b65945d9ad7" |
|
| 924 |
+ } |
|
| 925 |
+ ] |
|
| 911 | 926 |
} |
| ... | ... |
@@ -687,9 +687,6 @@ func GetDockerPodStatus(client DockerInterface, manifest api.PodSpec, podFullNam |
| 687 | 687 |
} |
| 688 | 688 |
} |
| 689 | 689 |
|
| 690 |
- if podStatus.PodIP == "" {
|
|
| 691 |
- return nil, ErrNoPodInfraContainerInPod |
|
| 692 |
- } |
|
| 693 | 690 |
if len(statuses) == 0 && podStatus.PodIP == "" {
|
| 694 | 691 |
return nil, ErrNoContainersInPod |
| 695 | 692 |
} |
| ... | ... |
@@ -58,7 +58,7 @@ func walkJSONFiles(inDir string, fn func(name, path string, data []byte)) error |
| 58 | 58 |
func TestExampleObjectSchemas(t *testing.T) {
|
| 59 | 59 |
// Allow privileged containers |
| 60 | 60 |
// TODO: make this configurable and not the default https://github.com/openshift/origin/issues/662 |
| 61 |
- kubelet.SetupCapabilities(true) |
|
| 61 |
+ kubelet.SetupCapabilities(true, nil) |
|
| 62 | 62 |
cases := map[string]map[string]runtime.Object{
|
| 63 | 63 |
"../examples/hello-openshift": {
|
| 64 | 64 |
"hello-pod": &kapi.Pod{},
|
| ... | ... |
@@ -272,7 +272,7 @@ osc new-app php mysql |
| 272 | 272 |
echo "new-app: ok" |
| 273 | 273 |
|
| 274 | 274 |
osc get routes |
| 275 |
-osc create -f test/integration/fixtures/test-route.json create routes |
|
| 275 |
+osc create -f test/integration/fixtures/test-route.json |
|
| 276 | 276 |
osc delete routes testroute |
| 277 | 277 |
echo "routes: ok" |
| 278 | 278 |
|
| ... | ... |
@@ -337,6 +337,7 @@ echo "ui-project-commands: ok" |
| 337 | 337 |
# Test deleting and recreating a project |
| 338 | 338 |
osadm new-project recreated-project --admin="createuser1" |
| 339 | 339 |
osc delete project recreated-project |
| 340 |
+osc delete project recreated-project |
|
| 340 | 341 |
osadm new-project recreated-project --admin="createuser2" |
| 341 | 342 |
osc describe policybinding master -n recreated-project | grep createuser2 |
| 342 | 343 |
echo "ex new-project: ok" |
| ... | ... |
@@ -1,23 +1,23 @@ |
| 1 | 1 |
package validation |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 5 | 4 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 6 | 5 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 6 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 7 | 7 |
|
| 8 | 8 |
authorizationapi "github.com/openshift/origin/pkg/authorization/api" |
| 9 | 9 |
) |
| 10 | 10 |
|
| 11 | 11 |
// ValidatePolicyBinding tests required fields for a PolicyBinding. |
| 12 |
-func ValidatePolicyBinding(policyBinding *authorizationapi.PolicyBinding) errs.ValidationErrorList {
|
|
| 13 |
- allErrs := errs.ValidationErrorList{}
|
|
| 12 |
+func ValidatePolicyBinding(policyBinding *authorizationapi.PolicyBinding) fielderrors.ValidationErrorList {
|
|
| 13 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 14 | 14 |
|
| 15 | 15 |
if len(policyBinding.Name) == 0 {
|
| 16 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 16 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 17 | 17 |
} |
| 18 | 18 |
|
| 19 | 19 |
if len(policyBinding.PolicyRef.Namespace) == 0 {
|
| 20 |
- allErrs = append(allErrs, errs.NewFieldRequired("policyRef.Namespace"))
|
|
| 20 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("policyRef.Namespace"))
|
|
| 21 | 21 |
} |
| 22 | 22 |
|
| 23 | 23 |
allErrs = append(allErrs, validation.ValidateLabels(policyBinding.Labels, "labels")...) |
| ... | ... |
@@ -25,11 +25,11 @@ func ValidatePolicyBinding(policyBinding *authorizationapi.PolicyBinding) errs.V |
| 25 | 25 |
} |
| 26 | 26 |
|
| 27 | 27 |
// ValidateRole tests required fields for a Role. |
| 28 |
-func ValidateRole(role *authorizationapi.Role) errs.ValidationErrorList {
|
|
| 29 |
- allErrs := errs.ValidationErrorList{}
|
|
| 28 |
+func ValidateRole(role *authorizationapi.Role) fielderrors.ValidationErrorList {
|
|
| 29 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 30 | 30 |
|
| 31 | 31 |
if len(role.Name) == 0 {
|
| 32 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 32 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 33 | 33 |
} |
| 34 | 34 |
|
| 35 | 35 |
allErrs = append(allErrs, validation.ValidateLabels(role.Labels, "labels")...) |
| ... | ... |
@@ -37,17 +37,17 @@ func ValidateRole(role *authorizationapi.Role) errs.ValidationErrorList {
|
| 37 | 37 |
} |
| 38 | 38 |
|
| 39 | 39 |
// ValidateRoleBinding tests required fields for a RoleBinding. |
| 40 |
-func ValidateRoleBinding(roleBinding *authorizationapi.RoleBinding) errs.ValidationErrorList {
|
|
| 41 |
- allErrs := errs.ValidationErrorList{}
|
|
| 40 |
+func ValidateRoleBinding(roleBinding *authorizationapi.RoleBinding) fielderrors.ValidationErrorList {
|
|
| 41 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 42 | 42 |
|
| 43 | 43 |
if len(roleBinding.Name) == 0 {
|
| 44 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 44 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 45 | 45 |
} |
| 46 | 46 |
|
| 47 | 47 |
if len(roleBinding.RoleRef.Namespace) == 0 {
|
| 48 |
- allErrs = append(allErrs, errs.NewFieldRequired("roleRef.namespace"))
|
|
| 48 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("roleRef.namespace"))
|
|
| 49 | 49 |
} else if !util.IsDNS1123Subdomain(roleBinding.RoleRef.Namespace) {
|
| 50 |
- allErrs = append(allErrs, errs.NewFieldInvalid("roleRef.namespace", roleBinding.RoleRef.Namespace, "roleRef.namespace must be a valid subdomain"))
|
|
| 50 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("roleRef.namespace", roleBinding.RoleRef.Namespace, "roleRef.namespace must be a valid subdomain"))
|
|
| 51 | 51 |
} |
| 52 | 52 |
|
| 53 | 53 |
allErrs = append(allErrs, validation.ValidateLabels(roleBinding.Labels, "labels")...) |
| ... | ... |
@@ -2,7 +2,6 @@ package policy |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 6 | 5 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 7 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -17,7 +16,7 @@ type REST struct {
|
| 17 | 17 |
} |
| 18 | 18 |
|
| 19 | 19 |
// NewREST creates a new REST for policies. |
| 20 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 20 |
+func NewREST(registry Registry) *REST {
|
|
| 21 | 21 |
return &REST{registry}
|
| 22 | 22 |
} |
| 23 | 23 |
|
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -22,7 +21,7 @@ type REST struct {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
// NewREST creates a new REST for policyBindings. |
| 25 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 25 |
+func NewREST(registry Registry) *REST {
|
|
| 26 | 26 |
return &REST{registry}
|
| 27 | 27 |
} |
| 28 | 28 |
|
| ... | ... |
@@ -4,7 +4,6 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 9 | 8 |
|
| 10 | 9 |
authorizationapi "github.com/openshift/origin/pkg/authorization/api" |
| ... | ... |
@@ -17,7 +16,7 @@ type REST struct {
|
| 17 | 17 |
} |
| 18 | 18 |
|
| 19 | 19 |
// NewREST creates a new REST for policies. |
| 20 |
-func NewREST(authorizer authorizer.Authorizer) apiserver.RESTStorage {
|
|
| 20 |
+func NewREST(authorizer authorizer.Authorizer) *REST {
|
|
| 21 | 21 |
return &REST{authorizer}
|
| 22 | 22 |
} |
| 23 | 23 |
|
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -20,7 +19,7 @@ type REST struct {
|
| 20 | 20 |
} |
| 21 | 21 |
|
| 22 | 22 |
// NewREST creates a new REST for policies. |
| 23 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 23 |
+func NewREST(registry Registry) *REST {
|
|
| 24 | 24 |
return &REST{registry}
|
| 25 | 25 |
} |
| 26 | 26 |
|
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
|
| ... | ... |
@@ -21,7 +20,7 @@ type REST struct {
|
| 21 | 21 |
} |
| 22 | 22 |
|
| 23 | 23 |
// NewREST creates a new REST for policies. |
| 24 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 24 |
+func NewREST(registry Registry) *REST {
|
|
| 25 | 25 |
return &REST{registry}
|
| 26 | 26 |
} |
| 27 | 27 |
|
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
"fmt" |
| 6 | 6 |
|
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/auth/user" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 | 10 |
|
| ... | ... |
@@ -19,7 +18,7 @@ type REST struct {
|
| 19 | 19 |
} |
| 20 | 20 |
|
| 21 | 21 |
// NewREST creates a new REST for policies. |
| 22 |
-func NewREST(authorizer authorizer.Authorizer) apiserver.RESTStorage {
|
|
| 22 |
+func NewREST(authorizer authorizer.Authorizer) *REST {
|
|
| 23 | 23 |
return &REST{authorizer}
|
| 24 | 24 |
} |
| 25 | 25 |
|
| ... | ... |
@@ -3,26 +3,26 @@ package validation |
| 3 | 3 |
import ( |
| 4 | 4 |
"net/url" |
| 5 | 5 |
|
| 6 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 8 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 9 | 9 |
|
| 10 | 10 |
buildapi "github.com/openshift/origin/pkg/build/api" |
| 11 | 11 |
imageapi "github.com/openshift/origin/pkg/image/api" |
| 12 | 12 |
) |
| 13 | 13 |
|
| 14 | 14 |
// ValidateBuild tests required fields for a Build. |
| 15 |
-func ValidateBuild(build *buildapi.Build) errs.ValidationErrorList {
|
|
| 16 |
- allErrs := errs.ValidationErrorList{}
|
|
| 15 |
+func ValidateBuild(build *buildapi.Build) fielderrors.ValidationErrorList {
|
|
| 16 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 17 | 17 |
if len(build.Name) == 0 {
|
| 18 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 18 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 19 | 19 |
} else if !util.IsDNS1123Subdomain(build.Name) {
|
| 20 |
- allErrs = append(allErrs, errs.NewFieldInvalid("name", build.Name, "name must be a valid subdomain"))
|
|
| 20 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("name", build.Name, "name must be a valid subdomain"))
|
|
| 21 | 21 |
} |
| 22 | 22 |
if len(build.Namespace) == 0 {
|
| 23 |
- allErrs = append(allErrs, errs.NewFieldRequired("namespace"))
|
|
| 23 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("namespace"))
|
|
| 24 | 24 |
} else if !util.IsDNS1123Subdomain(build.Namespace) {
|
| 25 |
- allErrs = append(allErrs, errs.NewFieldInvalid("namespace", build.Namespace, "namespace must be a valid subdomain"))
|
|
| 25 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("namespace", build.Namespace, "namespace must be a valid subdomain"))
|
|
| 26 | 26 |
} |
| 27 | 27 |
allErrs = append(allErrs, validation.ValidateLabels(build.Labels, "labels")...) |
| 28 | 28 |
allErrs = append(allErrs, validateBuildParameters(&build.Parameters).Prefix("parameters")...)
|
| ... | ... |
@@ -30,17 +30,17 @@ func ValidateBuild(build *buildapi.Build) errs.ValidationErrorList {
|
| 30 | 30 |
} |
| 31 | 31 |
|
| 32 | 32 |
// ValidateBuildConfig tests required fields for a Build. |
| 33 |
-func ValidateBuildConfig(config *buildapi.BuildConfig) errs.ValidationErrorList {
|
|
| 34 |
- allErrs := errs.ValidationErrorList{}
|
|
| 33 |
+func ValidateBuildConfig(config *buildapi.BuildConfig) fielderrors.ValidationErrorList {
|
|
| 34 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 35 | 35 |
if len(config.Name) == 0 {
|
| 36 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 36 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 37 | 37 |
} else if !util.IsDNS1123Subdomain(config.Name) {
|
| 38 |
- allErrs = append(allErrs, errs.NewFieldInvalid("name", config.Name, "name must be a valid subdomain"))
|
|
| 38 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("name", config.Name, "name must be a valid subdomain"))
|
|
| 39 | 39 |
} |
| 40 | 40 |
if len(config.Namespace) == 0 {
|
| 41 |
- allErrs = append(allErrs, errs.NewFieldRequired("namespace"))
|
|
| 41 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("namespace"))
|
|
| 42 | 42 |
} else if !util.IsDNS1123Subdomain(config.Namespace) {
|
| 43 |
- allErrs = append(allErrs, errs.NewFieldInvalid("namespace", config.Namespace, "namespace must be a valid subdomain"))
|
|
| 43 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("namespace", config.Namespace, "namespace must be a valid subdomain"))
|
|
| 44 | 44 |
} |
| 45 | 45 |
allErrs = append(allErrs, validation.ValidateLabels(config.Labels, "labels")...) |
| 46 | 46 |
for i := range config.Triggers {
|
| ... | ... |
@@ -51,10 +51,10 @@ func ValidateBuildConfig(config *buildapi.BuildConfig) errs.ValidationErrorList |
| 51 | 51 |
return allErrs |
| 52 | 52 |
} |
| 53 | 53 |
|
| 54 |
-func ValidateBuildRequest(request *buildapi.BuildRequest) errs.ValidationErrorList {
|
|
| 55 |
- allErrs := errs.ValidationErrorList{}
|
|
| 54 |
+func ValidateBuildRequest(request *buildapi.BuildRequest) fielderrors.ValidationErrorList {
|
|
| 55 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 56 | 56 |
if len(request.Name) == 0 {
|
| 57 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 57 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 58 | 58 |
} |
| 59 | 59 |
if request.Revision != nil {
|
| 60 | 60 |
allErrs = append(allErrs, validateRevision(request.Revision).Prefix("revision")...)
|
| ... | ... |
@@ -62,8 +62,8 @@ func ValidateBuildRequest(request *buildapi.BuildRequest) errs.ValidationErrorLi |
| 62 | 62 |
return allErrs |
| 63 | 63 |
} |
| 64 | 64 |
|
| 65 |
-func validateBuildParameters(params *buildapi.BuildParameters) errs.ValidationErrorList {
|
|
| 66 |
- allErrs := errs.ValidationErrorList{}
|
|
| 65 |
+func validateBuildParameters(params *buildapi.BuildParameters) fielderrors.ValidationErrorList {
|
|
| 66 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 67 | 67 |
isCustomBuild := params.Strategy.Type == buildapi.CustomBuildStrategyType |
| 68 | 68 |
// Validate 'source' and 'output' for all build types except Custom build |
| 69 | 69 |
// where they are optional and validated only if present. |
| ... | ... |
@@ -81,40 +81,40 @@ func validateBuildParameters(params *buildapi.BuildParameters) errs.ValidationEr |
| 81 | 81 |
return allErrs |
| 82 | 82 |
} |
| 83 | 83 |
|
| 84 |
-func validateSource(input *buildapi.BuildSource) errs.ValidationErrorList {
|
|
| 85 |
- allErrs := errs.ValidationErrorList{}
|
|
| 84 |
+func validateSource(input *buildapi.BuildSource) fielderrors.ValidationErrorList {
|
|
| 85 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 86 | 86 |
if input.Type != buildapi.BuildSourceGit {
|
| 87 |
- allErrs = append(allErrs, errs.NewFieldRequired("type"))
|
|
| 87 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("type"))
|
|
| 88 | 88 |
} |
| 89 | 89 |
if input.Git == nil {
|
| 90 |
- allErrs = append(allErrs, errs.NewFieldRequired("git"))
|
|
| 90 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("git"))
|
|
| 91 | 91 |
} else {
|
| 92 | 92 |
allErrs = append(allErrs, validateGitSource(input.Git).Prefix("git")...)
|
| 93 | 93 |
} |
| 94 | 94 |
return allErrs |
| 95 | 95 |
} |
| 96 | 96 |
|
| 97 |
-func validateGitSource(git *buildapi.GitBuildSource) errs.ValidationErrorList {
|
|
| 98 |
- allErrs := errs.ValidationErrorList{}
|
|
| 97 |
+func validateGitSource(git *buildapi.GitBuildSource) fielderrors.ValidationErrorList {
|
|
| 98 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 99 | 99 |
if len(git.URI) == 0 {
|
| 100 |
- allErrs = append(allErrs, errs.NewFieldRequired("uri"))
|
|
| 100 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("uri"))
|
|
| 101 | 101 |
} else if !isValidURL(git.URI) {
|
| 102 |
- allErrs = append(allErrs, errs.NewFieldInvalid("uri", git.URI, "uri is not a valid url"))
|
|
| 102 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("uri", git.URI, "uri is not a valid url"))
|
|
| 103 | 103 |
} |
| 104 | 104 |
return allErrs |
| 105 | 105 |
} |
| 106 | 106 |
|
| 107 |
-func validateRevision(revision *buildapi.SourceRevision) errs.ValidationErrorList {
|
|
| 108 |
- allErrs := errs.ValidationErrorList{}
|
|
| 107 |
+func validateRevision(revision *buildapi.SourceRevision) fielderrors.ValidationErrorList {
|
|
| 108 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 109 | 109 |
if len(revision.Type) == 0 {
|
| 110 |
- allErrs = append(allErrs, errs.NewFieldRequired("type"))
|
|
| 110 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("type"))
|
|
| 111 | 111 |
} |
| 112 | 112 |
// TODO: validate other stuff |
| 113 | 113 |
return allErrs |
| 114 | 114 |
} |
| 115 | 115 |
|
| 116 |
-func validateOutput(output *buildapi.BuildOutput) errs.ValidationErrorList {
|
|
| 117 |
- allErrs := errs.ValidationErrorList{}
|
|
| 116 |
+func validateOutput(output *buildapi.BuildOutput) fielderrors.ValidationErrorList {
|
|
| 117 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 118 | 118 |
|
| 119 | 119 |
// TODO: make part of a generic ValidateObjectReference method upstream. |
| 120 | 120 |
if output.To != nil {
|
| ... | ... |
@@ -124,44 +124,44 @@ func validateOutput(output *buildapi.BuildOutput) errs.ValidationErrorList {
|
| 124 | 124 |
output.To.Kind = kind |
| 125 | 125 |
} |
| 126 | 126 |
if kind != "ImageRepository" {
|
| 127 |
- allErrs = append(allErrs, errs.NewFieldInvalid("to.kind", kind, "the target of build output must be 'ImageRepository'"))
|
|
| 127 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("to.kind", kind, "the target of build output must be 'ImageRepository'"))
|
|
| 128 | 128 |
} |
| 129 | 129 |
if len(name) == 0 {
|
| 130 |
- allErrs = append(allErrs, errs.NewFieldRequired("to.name"))
|
|
| 130 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("to.name"))
|
|
| 131 | 131 |
} else if !util.IsDNS1123Subdomain(name) {
|
| 132 |
- allErrs = append(allErrs, errs.NewFieldInvalid("to.name", name, "name must be a valid subdomain"))
|
|
| 132 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("to.name", name, "name must be a valid subdomain"))
|
|
| 133 | 133 |
} |
| 134 | 134 |
if len(namespace) != 0 && !util.IsDNS1123Subdomain(namespace) {
|
| 135 |
- allErrs = append(allErrs, errs.NewFieldInvalid("to.namespace", namespace, "namespace must be a valid subdomain"))
|
|
| 135 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("to.namespace", namespace, "namespace must be a valid subdomain"))
|
|
| 136 | 136 |
} |
| 137 | 137 |
} |
| 138 | 138 |
|
| 139 | 139 |
if len(output.DockerImageReference) != 0 {
|
| 140 | 140 |
if _, err := imageapi.ParseDockerImageReference(output.DockerImageReference); err != nil {
|
| 141 |
- allErrs = append(allErrs, errs.NewFieldInvalid("dockerImageReference", output.DockerImageReference, err.Error()))
|
|
| 141 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("dockerImageReference", output.DockerImageReference, err.Error()))
|
|
| 142 | 142 |
} |
| 143 | 143 |
} |
| 144 | 144 |
return allErrs |
| 145 | 145 |
} |
| 146 | 146 |
|
| 147 |
-func validateBuildConfigOutput(output *buildapi.BuildOutput) errs.ValidationErrorList {
|
|
| 148 |
- allErrs := errs.ValidationErrorList{}
|
|
| 147 |
+func validateBuildConfigOutput(output *buildapi.BuildOutput) fielderrors.ValidationErrorList {
|
|
| 148 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 149 | 149 |
if len(output.DockerImageReference) != 0 && output.To != nil {
|
| 150 |
- allErrs = append(allErrs, errs.NewFieldInvalid("dockerImageReference", output.DockerImageReference, "only one of 'dockerImageReference' and 'to' may be set"))
|
|
| 150 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("dockerImageReference", output.DockerImageReference, "only one of 'dockerImageReference' and 'to' may be set"))
|
|
| 151 | 151 |
} |
| 152 | 152 |
return allErrs |
| 153 | 153 |
} |
| 154 | 154 |
|
| 155 |
-func validateStrategy(strategy *buildapi.BuildStrategy) errs.ValidationErrorList {
|
|
| 156 |
- allErrs := errs.ValidationErrorList{}
|
|
| 155 |
+func validateStrategy(strategy *buildapi.BuildStrategy) fielderrors.ValidationErrorList {
|
|
| 156 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 157 | 157 |
|
| 158 | 158 |
switch {
|
| 159 | 159 |
case len(strategy.Type) == 0: |
| 160 |
- allErrs = append(allErrs, errs.NewFieldRequired("type"))
|
|
| 160 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("type"))
|
|
| 161 | 161 |
|
| 162 | 162 |
case strategy.Type == buildapi.STIBuildStrategyType: |
| 163 | 163 |
if strategy.STIStrategy == nil {
|
| 164 |
- allErrs = append(allErrs, errs.NewFieldRequired("stiStrategy"))
|
|
| 164 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("stiStrategy"))
|
|
| 165 | 165 |
} else {
|
| 166 | 166 |
allErrs = append(allErrs, validateSTIStrategy(strategy.STIStrategy).Prefix("stiStrategy")...)
|
| 167 | 167 |
} |
| ... | ... |
@@ -172,35 +172,35 @@ func validateStrategy(strategy *buildapi.BuildStrategy) errs.ValidationErrorList |
| 172 | 172 |
} |
| 173 | 173 |
case strategy.Type == buildapi.CustomBuildStrategyType: |
| 174 | 174 |
if strategy.CustomStrategy == nil {
|
| 175 |
- allErrs = append(allErrs, errs.NewFieldRequired("customStrategy"))
|
|
| 175 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("customStrategy"))
|
|
| 176 | 176 |
} else {
|
| 177 | 177 |
// CustomBuildStrategy requires 'image' to be specified in JSON |
| 178 | 178 |
if len(strategy.CustomStrategy.Image) == 0 {
|
| 179 |
- allErrs = append(allErrs, errs.NewFieldRequired("image"))
|
|
| 179 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("image"))
|
|
| 180 | 180 |
} |
| 181 | 181 |
} |
| 182 | 182 |
default: |
| 183 |
- allErrs = append(allErrs, errs.NewFieldInvalid("type", strategy.Type, "type is not in the enumerated list"))
|
|
| 183 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("type", strategy.Type, "type is not in the enumerated list"))
|
|
| 184 | 184 |
} |
| 185 | 185 |
|
| 186 | 186 |
return allErrs |
| 187 | 187 |
} |
| 188 | 188 |
|
| 189 |
-func validateSTIStrategy(strategy *buildapi.STIBuildStrategy) errs.ValidationErrorList {
|
|
| 190 |
- allErrs := errs.ValidationErrorList{}
|
|
| 189 |
+func validateSTIStrategy(strategy *buildapi.STIBuildStrategy) fielderrors.ValidationErrorList {
|
|
| 190 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 191 | 191 |
if (strategy.From == nil || len(strategy.From.Name) == 0) && len(strategy.Image) == 0 {
|
| 192 |
- allErrs = append(allErrs, errs.NewFieldRequired("from"))
|
|
| 192 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("from"))
|
|
| 193 | 193 |
} |
| 194 | 194 |
if (strategy.From != nil && len(strategy.From.Name) != 0) && len(strategy.Image) != 0 {
|
| 195 |
- allErrs = append(allErrs, errs.NewFieldInvalid("image", strategy.Image, "only one of 'image' and 'from' may be set"))
|
|
| 195 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("image", strategy.Image, "only one of 'image' and 'from' may be set"))
|
|
| 196 | 196 |
} |
| 197 | 197 |
return allErrs |
| 198 | 198 |
} |
| 199 | 199 |
|
| 200 |
-func validateTrigger(trigger *buildapi.BuildTriggerPolicy) errs.ValidationErrorList {
|
|
| 201 |
- allErrs := errs.ValidationErrorList{}
|
|
| 200 |
+func validateTrigger(trigger *buildapi.BuildTriggerPolicy) fielderrors.ValidationErrorList {
|
|
| 201 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 202 | 202 |
if len(trigger.Type) == 0 {
|
| 203 |
- allErrs = append(allErrs, errs.NewFieldRequired("type"))
|
|
| 203 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("type"))
|
|
| 204 | 204 |
return allErrs |
| 205 | 205 |
} |
| 206 | 206 |
|
| ... | ... |
@@ -215,19 +215,19 @@ func validateTrigger(trigger *buildapi.BuildTriggerPolicy) errs.ValidationErrorL |
| 215 | 215 |
switch trigger.Type {
|
| 216 | 216 |
case buildapi.GithubWebHookBuildTriggerType: |
| 217 | 217 |
if trigger.GithubWebHook == nil {
|
| 218 |
- allErrs = append(allErrs, errs.NewFieldRequired("github"))
|
|
| 218 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("github"))
|
|
| 219 | 219 |
} else {
|
| 220 | 220 |
allErrs = append(allErrs, validateWebHook(trigger.GithubWebHook).Prefix("github")...)
|
| 221 | 221 |
} |
| 222 | 222 |
case buildapi.GenericWebHookBuildTriggerType: |
| 223 | 223 |
if trigger.GenericWebHook == nil {
|
| 224 |
- allErrs = append(allErrs, errs.NewFieldRequired("generic"))
|
|
| 224 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("generic"))
|
|
| 225 | 225 |
} else {
|
| 226 | 226 |
allErrs = append(allErrs, validateWebHook(trigger.GenericWebHook).Prefix("generic")...)
|
| 227 | 227 |
} |
| 228 | 228 |
case buildapi.ImageChangeBuildTriggerType: |
| 229 | 229 |
if trigger.ImageChange == nil {
|
| 230 |
- allErrs = append(allErrs, errs.NewFieldRequired("imageChange"))
|
|
| 230 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("imageChange"))
|
|
| 231 | 231 |
} else {
|
| 232 | 232 |
allErrs = append(allErrs, validateImageChange(trigger.ImageChange).Prefix("imageChange")...)
|
| 233 | 233 |
} |
| ... | ... |
@@ -235,31 +235,31 @@ func validateTrigger(trigger *buildapi.BuildTriggerPolicy) errs.ValidationErrorL |
| 235 | 235 |
return allErrs |
| 236 | 236 |
} |
| 237 | 237 |
|
| 238 |
-func validateTriggerPresence(params map[buildapi.BuildTriggerType]bool, t buildapi.BuildTriggerType) errs.ValidationErrorList {
|
|
| 239 |
- allErrs := errs.ValidationErrorList{}
|
|
| 238 |
+func validateTriggerPresence(params map[buildapi.BuildTriggerType]bool, t buildapi.BuildTriggerType) fielderrors.ValidationErrorList {
|
|
| 239 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 240 | 240 |
for triggerType, present := range params {
|
| 241 | 241 |
if triggerType != t && present {
|
| 242 |
- allErrs = append(allErrs, errs.NewFieldInvalid(string(triggerType), "", "triggerType wasn't found")) |
|
| 242 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(string(triggerType), "", "triggerType wasn't found")) |
|
| 243 | 243 |
} |
| 244 | 244 |
} |
| 245 | 245 |
return allErrs |
| 246 | 246 |
} |
| 247 | 247 |
|
| 248 |
-func validateImageChange(imageChange *buildapi.ImageChangeTrigger) errs.ValidationErrorList {
|
|
| 249 |
- allErrs := errs.ValidationErrorList{}
|
|
| 248 |
+func validateImageChange(imageChange *buildapi.ImageChangeTrigger) fielderrors.ValidationErrorList {
|
|
| 249 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 250 | 250 |
if len(imageChange.Image) == 0 {
|
| 251 |
- allErrs = append(allErrs, errs.NewFieldRequired("image"))
|
|
| 251 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("image"))
|
|
| 252 | 252 |
} |
| 253 | 253 |
if len(imageChange.From.Name) == 0 {
|
| 254 |
- allErrs = append(allErrs, errs.ValidationErrorList{errs.NewFieldRequired("name")}.Prefix("from")...)
|
|
| 254 |
+ allErrs = append(allErrs, fielderrors.ValidationErrorList{fielderrors.NewFieldRequired("name")}.Prefix("from")...)
|
|
| 255 | 255 |
} |
| 256 | 256 |
return allErrs |
| 257 | 257 |
} |
| 258 | 258 |
|
| 259 |
-func validateWebHook(webHook *buildapi.WebHookTrigger) errs.ValidationErrorList {
|
|
| 260 |
- allErrs := errs.ValidationErrorList{}
|
|
| 259 |
+func validateWebHook(webHook *buildapi.WebHookTrigger) fielderrors.ValidationErrorList {
|
|
| 260 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 261 | 261 |
if len(webHook.Secret) == 0 {
|
| 262 |
- allErrs = append(allErrs, errs.NewFieldRequired("secret"))
|
|
| 262 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("secret"))
|
|
| 263 | 263 |
} |
| 264 | 264 |
return allErrs |
| 265 | 265 |
} |
| ... | ... |
@@ -4,7 +4,7 @@ import ( |
| 4 | 4 |
"testing" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 8 | 8 |
|
| 9 | 9 |
buildapi "github.com/openshift/origin/pkg/build/api" |
| 10 | 10 |
) |
| ... | ... |
@@ -142,7 +142,7 @@ func TestBuildConfigValidationOutputFailure(t *testing.T) {
|
| 142 | 142 |
func TestValidateBuildRequest(t *testing.T) {
|
| 143 | 143 |
testCases := map[string]*buildapi.BuildRequest{
|
| 144 | 144 |
"": {ObjectMeta: kapi.ObjectMeta{Name: "requestName"}},
|
| 145 |
- string(errs.ValidationErrorTypeRequired) + "name": {},
|
|
| 145 |
+ string(fielderrors.ValidationErrorTypeRequired) + "name": {},
|
|
| 146 | 146 |
} |
| 147 | 147 |
|
| 148 | 148 |
for desc, tc := range testCases {
|
| ... | ... |
@@ -154,7 +154,7 @@ func TestValidateBuildRequest(t *testing.T) {
|
| 154 | 154 |
t.Errorf("%s: Unexpected validation result: %v", desc, errors)
|
| 155 | 155 |
} |
| 156 | 156 |
if len(desc) > 0 {
|
| 157 |
- err := errors[0].(*errs.ValidationError) |
|
| 157 |
+ err := errors[0].(*fielderrors.ValidationError) |
|
| 158 | 158 |
errDesc := string(err.Type) + err.Field |
| 159 | 159 |
if desc != errDesc {
|
| 160 | 160 |
t.Errorf("Unexpected validation result for %s: expected %s, got %s", err.Field, desc, errDesc)
|
| ... | ... |
@@ -165,13 +165,13 @@ func TestValidateBuildRequest(t *testing.T) {
|
| 165 | 165 |
|
| 166 | 166 |
func TestValidateSource(t *testing.T) {
|
| 167 | 167 |
errorCases := map[string]*buildapi.BuildSource{
|
| 168 |
- string(errs.ValidationErrorTypeRequired) + "git.uri": {
|
|
| 168 |
+ string(fielderrors.ValidationErrorTypeRequired) + "git.uri": {
|
|
| 169 | 169 |
Type: buildapi.BuildSourceGit, |
| 170 | 170 |
Git: &buildapi.GitBuildSource{
|
| 171 | 171 |
URI: "", |
| 172 | 172 |
}, |
| 173 | 173 |
}, |
| 174 |
- string(errs.ValidationErrorTypeInvalid) + "git.uri": {
|
|
| 174 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "git.uri": {
|
|
| 175 | 175 |
Type: buildapi.BuildSourceGit, |
| 176 | 176 |
Git: &buildapi.GitBuildSource{
|
| 177 | 177 |
URI: "::", |
| ... | ... |
@@ -183,7 +183,7 @@ func TestValidateSource(t *testing.T) {
|
| 183 | 183 |
if len(errors) != 1 {
|
| 184 | 184 |
t.Errorf("%s: Unexpected validation result: %v", desc, errors)
|
| 185 | 185 |
} |
| 186 |
- err := errors[0].(*errs.ValidationError) |
|
| 186 |
+ err := errors[0].(*fielderrors.ValidationError) |
|
| 187 | 187 |
errDesc := string(err.Type) + err.Field |
| 188 | 188 |
if desc != errDesc {
|
| 189 | 189 |
t.Errorf("Unexpected validation result for %s: expected %s, got %s", err.Field, desc, errDesc)
|
| ... | ... |
@@ -197,7 +197,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 197 | 197 |
*buildapi.BuildParameters |
| 198 | 198 |
}{
|
| 199 | 199 |
{
|
| 200 |
- string(errs.ValidationErrorTypeInvalid) + "output.dockerImageReference", |
|
| 200 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "output.dockerImageReference", |
|
| 201 | 201 |
&buildapi.BuildParameters{
|
| 202 | 202 |
Source: buildapi.BuildSource{
|
| 203 | 203 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -216,7 +216,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 216 | 216 |
}, |
| 217 | 217 |
}, |
| 218 | 218 |
{
|
| 219 |
- string(errs.ValidationErrorTypeInvalid) + "output.to.kind", |
|
| 219 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "output.to.kind", |
|
| 220 | 220 |
&buildapi.BuildParameters{
|
| 221 | 221 |
Source: buildapi.BuildSource{
|
| 222 | 222 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -238,7 +238,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 238 | 238 |
}, |
| 239 | 239 |
}, |
| 240 | 240 |
{
|
| 241 |
- string(errs.ValidationErrorTypeRequired) + "output.to.name", |
|
| 241 |
+ string(fielderrors.ValidationErrorTypeRequired) + "output.to.name", |
|
| 242 | 242 |
&buildapi.BuildParameters{
|
| 243 | 243 |
Source: buildapi.BuildSource{
|
| 244 | 244 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -257,7 +257,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 257 | 257 |
}, |
| 258 | 258 |
}, |
| 259 | 259 |
{
|
| 260 |
- string(errs.ValidationErrorTypeInvalid) + "output.to.name", |
|
| 260 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "output.to.name", |
|
| 261 | 261 |
&buildapi.BuildParameters{
|
| 262 | 262 |
Source: buildapi.BuildSource{
|
| 263 | 263 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -279,7 +279,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 279 | 279 |
}, |
| 280 | 280 |
}, |
| 281 | 281 |
{
|
| 282 |
- string(errs.ValidationErrorTypeInvalid) + "output.to.namespace", |
|
| 282 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "output.to.namespace", |
|
| 283 | 283 |
&buildapi.BuildParameters{
|
| 284 | 284 |
Source: buildapi.BuildSource{
|
| 285 | 285 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -301,7 +301,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 301 | 301 |
}, |
| 302 | 302 |
}, |
| 303 | 303 |
{
|
| 304 |
- string(errs.ValidationErrorTypeInvalid) + "strategy.type", |
|
| 304 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "strategy.type", |
|
| 305 | 305 |
&buildapi.BuildParameters{
|
| 306 | 306 |
Source: buildapi.BuildSource{
|
| 307 | 307 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -316,7 +316,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 316 | 316 |
}, |
| 317 | 317 |
}, |
| 318 | 318 |
{
|
| 319 |
- string(errs.ValidationErrorTypeRequired) + "strategy.type", |
|
| 319 |
+ string(fielderrors.ValidationErrorTypeRequired) + "strategy.type", |
|
| 320 | 320 |
&buildapi.BuildParameters{
|
| 321 | 321 |
Source: buildapi.BuildSource{
|
| 322 | 322 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -333,7 +333,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 333 | 333 |
// invalid because both image and from are specified in the |
| 334 | 334 |
// sti strategy definition |
| 335 | 335 |
{
|
| 336 |
- string(errs.ValidationErrorTypeInvalid) + "strategy.stiStrategy.image", |
|
| 336 |
+ string(fielderrors.ValidationErrorTypeInvalid) + "strategy.stiStrategy.image", |
|
| 337 | 337 |
&buildapi.BuildParameters{
|
| 338 | 338 |
Source: buildapi.BuildSource{
|
| 339 | 339 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -358,7 +358,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 358 | 358 |
// invalid because neither image nor from are specified in the |
| 359 | 359 |
// sti strategy definition |
| 360 | 360 |
{
|
| 361 |
- string(errs.ValidationErrorTypeRequired) + "strategy.stiStrategy.from", |
|
| 361 |
+ string(fielderrors.ValidationErrorTypeRequired) + "strategy.stiStrategy.from", |
|
| 362 | 362 |
&buildapi.BuildParameters{
|
| 363 | 363 |
Source: buildapi.BuildSource{
|
| 364 | 364 |
Type: buildapi.BuildSourceGit, |
| ... | ... |
@@ -382,7 +382,7 @@ func TestValidateBuildParameters(t *testing.T) {
|
| 382 | 382 |
if len(errors) != 1 {
|
| 383 | 383 |
t.Errorf("%s: Unexpected validation result: %v", config.err, errors)
|
| 384 | 384 |
} |
| 385 |
- err := errors[0].(*errs.ValidationError) |
|
| 385 |
+ err := errors[0].(*fielderrors.ValidationError) |
|
| 386 | 386 |
errDesc := string(err.Type) + err.Field |
| 387 | 387 |
if config.err != errDesc {
|
| 388 | 388 |
t.Errorf("Unexpected validation result for %s: expected %s, got %s", err.Field, config.err, errDesc)
|
| ... | ... |
@@ -448,22 +448,22 @@ func TestValidateBuildParametersSuccess(t *testing.T) {
|
| 448 | 448 |
func TestValidateTrigger(t *testing.T) {
|
| 449 | 449 |
tests := map[string]struct {
|
| 450 | 450 |
trigger buildapi.BuildTriggerPolicy |
| 451 |
- expected []*errs.ValidationError |
|
| 451 |
+ expected []*fielderrors.ValidationError |
|
| 452 | 452 |
}{
|
| 453 | 453 |
"trigger without type": {
|
| 454 | 454 |
trigger: buildapi.BuildTriggerPolicy{},
|
| 455 |
- expected: []*errs.ValidationError{errs.NewFieldRequired("type")},
|
|
| 455 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldRequired("type")},
|
|
| 456 | 456 |
}, |
| 457 | 457 |
"github type with no github webhook": {
|
| 458 | 458 |
trigger: buildapi.BuildTriggerPolicy{Type: buildapi.GithubWebHookBuildTriggerType},
|
| 459 |
- expected: []*errs.ValidationError{errs.NewFieldRequired("github")},
|
|
| 459 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldRequired("github")},
|
|
| 460 | 460 |
}, |
| 461 | 461 |
"github trigger with no secret": {
|
| 462 | 462 |
trigger: buildapi.BuildTriggerPolicy{
|
| 463 | 463 |
Type: buildapi.GithubWebHookBuildTriggerType, |
| 464 | 464 |
GithubWebHook: &buildapi.WebHookTrigger{},
|
| 465 | 465 |
}, |
| 466 |
- expected: []*errs.ValidationError{errs.NewFieldRequired("github.secret")},
|
|
| 466 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldRequired("github.secret")},
|
|
| 467 | 467 |
}, |
| 468 | 468 |
"github trigger with generic webhook": {
|
| 469 | 469 |
trigger: buildapi.BuildTriggerPolicy{
|
| ... | ... |
@@ -472,18 +472,18 @@ func TestValidateTrigger(t *testing.T) {
|
| 472 | 472 |
Secret: "secret101", |
| 473 | 473 |
}, |
| 474 | 474 |
}, |
| 475 |
- expected: []*errs.ValidationError{errs.NewFieldInvalid("generic", "", "long description")},
|
|
| 475 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldInvalid("generic", "", "long description")},
|
|
| 476 | 476 |
}, |
| 477 | 477 |
"generic trigger with no generic webhook": {
|
| 478 | 478 |
trigger: buildapi.BuildTriggerPolicy{Type: buildapi.GenericWebHookBuildTriggerType},
|
| 479 |
- expected: []*errs.ValidationError{errs.NewFieldRequired("generic")},
|
|
| 479 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldRequired("generic")},
|
|
| 480 | 480 |
}, |
| 481 | 481 |
"generic trigger with no secret": {
|
| 482 | 482 |
trigger: buildapi.BuildTriggerPolicy{
|
| 483 | 483 |
Type: buildapi.GenericWebHookBuildTriggerType, |
| 484 | 484 |
GenericWebHook: &buildapi.WebHookTrigger{},
|
| 485 | 485 |
}, |
| 486 |
- expected: []*errs.ValidationError{errs.NewFieldRequired("generic.secret")},
|
|
| 486 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldRequired("generic.secret")},
|
|
| 487 | 487 |
}, |
| 488 | 488 |
"generic trigger with github webhook": {
|
| 489 | 489 |
trigger: buildapi.BuildTriggerPolicy{
|
| ... | ... |
@@ -492,7 +492,7 @@ func TestValidateTrigger(t *testing.T) {
|
| 492 | 492 |
Secret: "secret101", |
| 493 | 493 |
}, |
| 494 | 494 |
}, |
| 495 |
- expected: []*errs.ValidationError{errs.NewFieldInvalid("github", "", "long github description")},
|
|
| 495 |
+ expected: []*fielderrors.ValidationError{fielderrors.NewFieldInvalid("github", "", "long github description")},
|
|
| 496 | 496 |
}, |
| 497 | 497 |
"valid github trigger": {
|
| 498 | 498 |
trigger: buildapi.BuildTriggerPolicy{
|
| ... | ... |
@@ -520,7 +520,7 @@ func TestValidateTrigger(t *testing.T) {
|
| 520 | 520 |
continue |
| 521 | 521 |
} |
| 522 | 522 |
err := errors[0] |
| 523 |
- validationError := err.(*errs.ValidationError) |
|
| 523 |
+ validationError := err.(*fielderrors.ValidationError) |
|
| 524 | 524 |
if validationError.Type != test.expected[0].Type {
|
| 525 | 525 |
t.Errorf("%s: Unexpected error type: %s", desc, validationError.Type)
|
| 526 | 526 |
} |
| ... | ... |
@@ -168,7 +168,7 @@ func (bc *BuildPodController) HandlePod(pod *kapi.Pod) error {
|
| 168 | 168 |
case kapi.PodSucceeded, kapi.PodFailed: |
| 169 | 169 |
// Check the exit codes of all the containers in the pod |
| 170 | 170 |
nextStatus = buildapi.BuildStatusComplete |
| 171 |
- for _, info := range pod.Status.Info {
|
|
| 171 |
+ for _, info := range pod.Status.ContainerStatuses {
|
|
| 172 | 172 |
if info.State.Termination != nil && info.State.Termination.ExitCode != 0 {
|
| 173 | 173 |
nextStatus = buildapi.BuildStatusFailed |
| 174 | 174 |
break |
| ... | ... |
@@ -144,8 +144,8 @@ func mockPod(status kapi.PodPhase, exitCode int) *kapi.Pod {
|
| 144 | 144 |
ObjectMeta: kapi.ObjectMeta{Name: "name"},
|
| 145 | 145 |
Status: kapi.PodStatus{
|
| 146 | 146 |
Phase: status, |
| 147 |
- Info: kapi.PodInfo{
|
|
| 148 |
- "container1": kapi.ContainerStatus{
|
|
| 147 |
+ ContainerStatuses: []kapi.ContainerStatus{
|
|
| 148 |
+ {
|
|
| 149 | 149 |
State: kapi.ContainerState{
|
| 150 | 150 |
Termination: &kapi.ContainerStateTerminated{ExitCode: exitCode},
|
| 151 | 151 |
}, |
| ... | ... |
@@ -80,12 +80,7 @@ func setupDockerSecrets(pod *kapi.Pod, pushSecret string) {
|
| 80 | 80 |
Name: pushSecret, |
| 81 | 81 |
VolumeSource: kapi.VolumeSource{
|
| 82 | 82 |
Secret: &kapi.SecretVolumeSource{
|
| 83 |
- Target: kapi.ObjectReference{
|
|
| 84 |
- Kind: "Secret", |
|
| 85 |
- Name: pushSecret, |
|
| 86 |
- // TODO: Remove the namespace once it gets fixed upstream |
|
| 87 |
- Namespace: pod.Namespace, |
|
| 88 |
- }, |
|
| 83 |
+ SecretName: pushSecret, |
|
| 89 | 84 |
}, |
| 90 | 85 |
}, |
| 91 | 86 |
} |
| ... | ... |
@@ -6,7 +6,6 @@ import ( |
| 6 | 6 |
"code.google.com/p/go-uuid/uuid" |
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 9 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 12 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -22,7 +21,7 @@ type REST struct {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
// NewREST creates a new REST for builds. |
| 25 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 25 |
+func NewREST(registry Registry) *REST {
|
|
| 26 | 26 |
return &REST{registry}
|
| 27 | 27 |
} |
| 28 | 28 |
|
| ... | ... |
@@ -6,7 +6,6 @@ import ( |
| 6 | 6 |
"code.google.com/p/go-uuid/uuid" |
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 9 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 12 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -22,7 +21,7 @@ type REST struct {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
// NewREST creates a new REST for BuildConfig. |
| 25 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 25 |
+func NewREST(registry Registry) *REST {
|
|
| 26 | 26 |
return &REST{registry}
|
| 27 | 27 |
} |
| 28 | 28 |
|
| ... | ... |
@@ -2,13 +2,14 @@ package buildlog |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
"fmt" |
| 5 |
+ "net/http" |
|
| 6 |
+ "net/url" |
|
| 5 | 7 |
|
| 6 | 8 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 8 | 9 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 9 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 10 | 11 |
|
| 11 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 12 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 13 |
"github.com/openshift/origin/pkg/build/api" |
| 13 | 14 |
"github.com/openshift/origin/pkg/build/registry/build" |
| 14 | 15 |
buildutil "github.com/openshift/origin/pkg/build/util" |
| ... | ... |
@@ -36,7 +37,7 @@ func (r RealPodControl) getPod(namespace, name string) (*kapi.Pod, error) {
|
| 36 | 36 |
// NewREST creates a new REST for BuildLog |
| 37 | 37 |
// Takes build registry and pod client to get necessary attributes to assemble |
| 38 | 38 |
// URL to which the request shall be redirected in order to get build logs. |
| 39 |
-func NewREST(b build.Registry, pn kclient.PodsNamespacer) apiserver.RESTStorage {
|
|
| 39 |
+func NewREST(b build.Registry, pn kclient.PodsNamespacer) *REST {
|
|
| 40 | 40 |
return &REST{
|
| 41 | 41 |
BuildRegistry: b, |
| 42 | 42 |
PodControl: RealPodControl{pn},
|
| ... | ... |
@@ -44,10 +45,10 @@ func NewREST(b build.Registry, pn kclient.PodsNamespacer) apiserver.RESTStorage |
| 44 | 44 |
} |
| 45 | 45 |
|
| 46 | 46 |
// Redirector implementation |
| 47 |
-func (r *REST) ResourceLocation(ctx kapi.Context, id string) (string, error) {
|
|
| 47 |
+func (r *REST) ResourceLocation(ctx kapi.Context, id string) (*url.URL, http.RoundTripper, error) {
|
|
| 48 | 48 |
build, err := r.BuildRegistry.GetBuild(ctx, id) |
| 49 | 49 |
if err != nil {
|
| 50 |
- return "", errors.NewFieldNotFound("Build", id)
|
|
| 50 |
+ return nil, nil, fielderrors.NewFieldNotFound("Build", id)
|
|
| 51 | 51 |
} |
| 52 | 52 |
|
| 53 | 53 |
// TODO: these must be status errors, not field errors |
| ... | ... |
@@ -55,7 +56,7 @@ func (r *REST) ResourceLocation(ctx kapi.Context, id string) (string, error) {
|
| 55 | 55 |
buildPodName := buildutil.GetBuildPodName(build) |
| 56 | 56 |
pod, err := r.PodControl.getPod(build.Namespace, buildPodName) |
| 57 | 57 |
if err != nil {
|
| 58 |
- return "", errors.NewFieldNotFound("Pod.Name", buildPodName)
|
|
| 58 |
+ return nil, nil, fielderrors.NewFieldNotFound("Pod.Name", buildPodName)
|
|
| 59 | 59 |
} |
| 60 | 60 |
|
| 61 | 61 |
buildPodHost := pod.Status.Host |
| ... | ... |
@@ -67,7 +68,7 @@ func (r *REST) ResourceLocation(ctx kapi.Context, id string) (string, error) {
|
| 67 | 67 |
// Pod in which build take place can't be in the Pending or Unknown phase, |
| 68 | 68 |
// cause no containers are present in the Pod in those phases. |
| 69 | 69 |
if pod.Status.Phase == kapi.PodPending || pod.Status.Phase == kapi.PodUnknown {
|
| 70 |
- return "", errors.NewFieldInvalid("Pod.Status", pod.Status.Phase, "must be Running, Succeeded or Failed")
|
|
| 70 |
+ return nil, nil, fielderrors.NewFieldInvalid("Pod.Status", pod.Status.Phase, "must be Running, Succeeded or Failed")
|
|
| 71 | 71 |
} |
| 72 | 72 |
|
| 73 | 73 |
switch build.Status {
|
| ... | ... |
@@ -76,10 +77,12 @@ func (r *REST) ResourceLocation(ctx kapi.Context, id string) (string, error) {
|
| 76 | 76 |
case api.BuildStatusComplete, api.BuildStatusFailed: |
| 77 | 77 |
// Do not follow the Complete and Failed logs as the streaming already finished. |
| 78 | 78 |
default: |
| 79 |
- return "", errors.NewFieldInvalid("build.Status", build.Status, "must be Running, Complete or Failed")
|
|
| 79 |
+ return nil, nil, fielderrors.NewFieldInvalid("build.Status", build.Status, "must be Running, Complete or Failed")
|
|
| 80 | 80 |
} |
| 81 | 81 |
|
| 82 |
- return location, nil |
|
| 82 |
+ return &url.URL{
|
|
| 83 |
+ Host: location, |
|
| 84 |
+ }, nil, nil |
|
| 83 | 85 |
} |
| 84 | 86 |
|
| 85 | 87 |
func (r *REST) New() runtime.Object {
|
| ... | ... |
@@ -5,7 +5,7 @@ import ( |
| 5 | 5 |
"testing" |
| 6 | 6 |
|
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 8 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 9 | 9 |
|
| 10 | 10 |
"github.com/openshift/origin/pkg/build/api" |
| 11 | 11 |
"github.com/openshift/origin/pkg/build/registry/test" |
| ... | ... |
@@ -37,11 +37,11 @@ func (p *podControl) getPod(namespace, podName string) (*kapi.Pod, error) {
|
| 37 | 37 |
// is evaluating the outcome based only on build state. |
| 38 | 38 |
func TestRegistryResourceLocation(t *testing.T) {
|
| 39 | 39 |
expectedLocations := map[api.BuildStatus]string{
|
| 40 |
- api.BuildStatusComplete: fmt.Sprintf("foo-host:%d/containerLogs/%s/running/foo-container",
|
|
| 40 |
+ api.BuildStatusComplete: fmt.Sprintf("//foo-host:%d/containerLogs/%s/running/foo-container",
|
|
| 41 | 41 |
kubernetes.NodePort, kapi.NamespaceDefault), |
| 42 |
- api.BuildStatusFailed: fmt.Sprintf("foo-host:%d/containerLogs/%s/running/foo-container",
|
|
| 42 |
+ api.BuildStatusFailed: fmt.Sprintf("//foo-host:%d/containerLogs/%s/running/foo-container",
|
|
| 43 | 43 |
kubernetes.NodePort, kapi.NamespaceDefault), |
| 44 |
- api.BuildStatusRunning: fmt.Sprintf("foo-host:%d/containerLogs/%s/running/foo-container?follow=1",
|
|
| 44 |
+ api.BuildStatusRunning: fmt.Sprintf("//foo-host:%d/containerLogs/%s/running/foo-container?follow=1",
|
|
| 45 | 45 |
kubernetes.NodePort, kapi.NamespaceDefault), |
| 46 | 46 |
api.BuildStatusNew: "", |
| 47 | 47 |
api.BuildStatusPending: "", |
| ... | ... |
@@ -104,9 +104,14 @@ func resourceLocationHelper(buildStatus api.BuildStatus, podPhase string, ctx ka |
| 104 | 104 |
expectedBuild := mockBuild(buildStatus, podPhase) |
| 105 | 105 |
buildRegistry := test.BuildRegistry{Build: expectedBuild}
|
| 106 | 106 |
storage := REST{&buildRegistry, &podControl{}}
|
| 107 |
- redirector := apiserver.Redirector(&storage) |
|
| 108 |
- location, err := redirector.ResourceLocation(ctx, "foo-build") |
|
| 109 |
- return location, err |
|
| 107 |
+ redirector := rest.Redirector(&storage) |
|
| 108 |
+ location, _, err := redirector.ResourceLocation(ctx, "foo-build") |
|
| 109 |
+ |
|
| 110 |
+ if location != nil {
|
|
| 111 |
+ return location.String(), err |
|
| 112 |
+ } |
|
| 113 |
+ |
|
| 114 |
+ return "", err |
|
| 110 | 115 |
} |
| 111 | 116 |
|
| 112 | 117 |
func mockPod(podPhase kapi.PodPhase) *kapi.Pod {
|
| ... | ... |
@@ -118,7 +118,7 @@ func NewCmdNewApplication(fullName string, f *clientcmd.Factory, out io.Writer) |
| 118 | 118 |
for _, item := range result.List.Items {
|
| 119 | 119 |
switch t := item.(type) {
|
| 120 | 120 |
case *kapi.Service: |
| 121 |
- fmt.Fprintf(os.Stderr, "Service %q created at %s:%d to talk to pods over port %d.\n", t.Name, t.Spec.PortalIP, t.Spec.Port, t.Spec.ContainerPort.IntVal) |
|
| 121 |
+ fmt.Fprintf(os.Stderr, "Service %q created at %s:%d to talk to pods over port %d.\n", t.Name, t.Spec.PortalIP, t.Spec.Port, t.Spec.TargetPort.IntVal) |
|
| 122 | 122 |
case *buildapi.BuildConfig: |
| 123 | 123 |
fmt.Fprintf(os.Stderr, "A build was created - you can run `osc start-build %s` to start it.\n", t.Name) |
| 124 | 124 |
case *imageapi.ImageRepository: |
| ... | ... |
@@ -5,8 +5,10 @@ import ( |
| 5 | 5 |
"io" |
| 6 | 6 |
"strings" |
| 7 | 7 |
|
| 8 |
+ kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
|
| 8 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta" |
| 9 | 10 |
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource" |
|
| 10 | 12 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 11 | 13 |
"github.com/golang/glog" |
| 12 | 14 |
"github.com/spf13/cobra" |
| ... | ... |
@@ -94,22 +96,25 @@ func NewCmdProcess(fullName string, f *clientcmd.Factory, out io.Writer) *cobra. |
| 94 | 94 |
checkErr(err) |
| 95 | 95 |
} |
| 96 | 96 |
} else {
|
| 97 |
- schema, err := f.Validator() |
|
| 98 |
- checkErr(err) |
|
| 99 |
- cfg, err := f.ClientConfig() |
|
| 100 |
- checkErr(err) |
|
| 101 |
- var ( |
|
| 102 |
- ok bool |
|
| 103 |
- data []byte |
|
| 104 |
- ) |
|
| 105 |
- mapping, _, _, data, err = cmdutil.ResourceFromFile(filename, typer, mapper, schema, cfg.Version) |
|
| 106 |
- checkErr(err) |
|
| 107 |
- obj, err := mapping.Codec.Decode(data) |
|
| 97 |
+ obj, err := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand(cmd)). |
|
| 98 |
+ NamespaceParam(namespace).RequireNamespace(). |
|
| 99 |
+ FilenameParam(filename). |
|
| 100 |
+ Do(). |
|
| 101 |
+ Object() |
|
| 102 |
+ |
|
| 108 | 103 |
checkErr(err) |
| 104 |
+ |
|
| 105 |
+ var ok bool |
|
| 109 | 106 |
templateObj, ok = obj.(*api.Template) |
| 110 | 107 |
if !ok {
|
| 111 | 108 |
checkErr(fmt.Errorf("cannot convert input to Template"))
|
| 112 | 109 |
} |
| 110 |
+ |
|
| 111 |
+ version, kind, err := kapi.Scheme.ObjectVersionAndKind(templateObj) |
|
| 112 |
+ checkErr(err) |
|
| 113 |
+ if mapping, err = mapper.RESTMapping(kind, version); err != nil {
|
|
| 114 |
+ checkErr(err) |
|
| 115 |
+ } |
|
| 113 | 116 |
} |
| 114 | 117 |
|
| 115 | 118 |
if cmd.Flag("value").Changed {
|
| ... | ... |
@@ -114,8 +114,8 @@ func mkPod(status kapi.PodPhase, exitCode int) *kapi.Pod {
|
| 114 | 114 |
ObjectMeta: kapi.ObjectMeta{Name: "PodName"},
|
| 115 | 115 |
Status: kapi.PodStatus{
|
| 116 | 116 |
Phase: status, |
| 117 |
- Info: kapi.PodInfo{
|
|
| 118 |
- "container1": kapi.ContainerStatus{
|
|
| 117 |
+ ContainerStatuses: []kapi.ContainerStatus{
|
|
| 118 |
+ {
|
|
| 119 | 119 |
State: kapi.ContainerState{
|
| 120 | 120 |
Termination: &kapi.ContainerStateTerminated{ExitCode: exitCode},
|
| 121 | 121 |
}, |
| ... | ... |
@@ -111,7 +111,7 @@ func NewCmdBuildChain(f *clientcmd.Factory, parentName, name string) *cobra.Comm |
| 111 | 111 |
} |
| 112 | 112 |
namespaces := make([]string, 0) |
| 113 | 113 |
if all {
|
| 114 |
- nsList, err := kc.Namespaces().List(labels.Everything()) |
|
| 114 |
+ nsList, err := kc.Namespaces().List(labels.Everything(), fields.Everything()) |
|
| 115 | 115 |
checkErr(err) |
| 116 | 116 |
for _, ns := range nsList.Items {
|
| 117 | 117 |
namespaces = append(namespaces, ns.Name) |
| ... | ... |
@@ -716,9 +716,9 @@ func expectedService(name string, port int, proto kapi.Protocol) map[string]kapi |
| 716 | 716 |
Name: name, |
| 717 | 717 |
}, |
| 718 | 718 |
Spec: kapi.ServiceSpec{
|
| 719 |
- Port: port, |
|
| 720 |
- Protocol: proto, |
|
| 721 |
- ContainerPort: util.NewIntOrStringFromInt(port), |
|
| 719 |
+ Port: port, |
|
| 720 |
+ Protocol: proto, |
|
| 721 |
+ TargetPort: util.NewIntOrStringFromInt(port), |
|
| 722 | 722 |
Selector: map[string]string{
|
| 723 | 723 |
"deploymentconfig": name, |
| 724 | 724 |
}, |
| ... | ... |
@@ -4,9 +4,10 @@ import ( |
| 4 | 4 |
"io/ioutil" |
| 5 | 5 |
"path" |
| 6 | 6 |
|
| 7 |
- "github.com/ghodss/yaml" |
|
| 8 |
- |
|
| 7 |
+ kyaml "github.com/GoogleCloudPlatform/kubernetes/pkg/util/yaml" |
|
| 9 | 8 |
configapi "github.com/openshift/origin/pkg/cmd/server/api" |
| 9 |
+ |
|
| 10 |
+ "github.com/ghodss/yaml" |
|
| 10 | 11 |
) |
| 11 | 12 |
|
| 12 | 13 |
func ReadMasterConfig(filename string) (*configapi.MasterConfig, error) {
|
| ... | ... |
@@ -16,6 +17,10 @@ func ReadMasterConfig(filename string) (*configapi.MasterConfig, error) {
|
| 16 | 16 |
} |
| 17 | 17 |
|
| 18 | 18 |
config := &configapi.MasterConfig{}
|
| 19 |
+ data, err = kyaml.ToJSON(data) |
|
| 20 |
+ if err != nil {
|
|
| 21 |
+ return nil, err |
|
| 22 |
+ } |
|
| 19 | 23 |
|
| 20 | 24 |
if err := Codec.DecodeInto(data, config); err != nil {
|
| 21 | 25 |
return nil, err |
| ... | ... |
@@ -39,9 +44,10 @@ func WriteNode(config *configapi.NodeConfig) ([]byte, error) {
|
| 39 | 39 |
if err != nil {
|
| 40 | 40 |
return nil, err |
| 41 | 41 |
} |
| 42 |
+ |
|
| 42 | 43 |
content, err := yaml.JSONToYAML(json) |
| 43 | 44 |
if err != nil {
|
| 44 | 45 |
return nil, err |
| 45 | 46 |
} |
| 46 |
- return content, nil |
|
| 47 |
+ return content, err |
|
| 47 | 48 |
} |
| ... | ... |
@@ -6,60 +6,60 @@ import ( |
| 6 | 6 |
"os" |
| 7 | 7 |
"strings" |
| 8 | 8 |
|
| 9 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 10 | 9 |
kvalidation "github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 10 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 11 | 11 |
|
| 12 | 12 |
"github.com/openshift/origin/pkg/cmd/server/api" |
| 13 | 13 |
) |
| 14 | 14 |
|
| 15 |
-func ValidateBindAddress(bindAddress string) errs.ValidationErrorList {
|
|
| 16 |
- allErrs := errs.ValidationErrorList{}
|
|
| 15 |
+func ValidateBindAddress(bindAddress string) fielderrors.ValidationErrorList {
|
|
| 16 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 17 | 17 |
|
| 18 | 18 |
if len(bindAddress) == 0 {
|
| 19 |
- allErrs = append(allErrs, errs.NewFieldRequired("bindAddress"))
|
|
| 19 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("bindAddress"))
|
|
| 20 | 20 |
} else if _, _, err := net.SplitHostPort(bindAddress); err != nil {
|
| 21 |
- allErrs = append(allErrs, errs.NewFieldInvalid("bindAddress", bindAddress, "must be a host:port"))
|
|
| 21 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("bindAddress", bindAddress, "must be a host:port"))
|
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
return allErrs |
| 25 | 25 |
} |
| 26 | 26 |
|
| 27 |
-func ValidateServingInfo(info api.ServingInfo) errs.ValidationErrorList {
|
|
| 28 |
- allErrs := errs.ValidationErrorList{}
|
|
| 27 |
+func ValidateServingInfo(info api.ServingInfo) fielderrors.ValidationErrorList {
|
|
| 28 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 29 | 29 |
|
| 30 | 30 |
allErrs = append(allErrs, ValidateBindAddress(info.BindAddress)...) |
| 31 | 31 |
|
| 32 | 32 |
if len(info.ServerCert.CertFile) > 0 {
|
| 33 | 33 |
if _, err := os.Stat(info.ServerCert.CertFile); err != nil {
|
| 34 |
- allErrs = append(allErrs, errs.NewFieldInvalid("certFile", info.ServerCert.CertFile, "could not read file"))
|
|
| 34 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("certFile", info.ServerCert.CertFile, "could not read file"))
|
|
| 35 | 35 |
} |
| 36 | 36 |
|
| 37 | 37 |
if len(info.ServerCert.KeyFile) == 0 {
|
| 38 |
- allErrs = append(allErrs, errs.NewFieldRequired("keyFile"))
|
|
| 38 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("keyFile"))
|
|
| 39 | 39 |
} else if _, err := os.Stat(info.ServerCert.KeyFile); err != nil {
|
| 40 |
- allErrs = append(allErrs, errs.NewFieldInvalid("keyFile", info.ServerCert.KeyFile, "could not read file"))
|
|
| 40 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("keyFile", info.ServerCert.KeyFile, "could not read file"))
|
|
| 41 | 41 |
} |
| 42 | 42 |
|
| 43 | 43 |
if len(info.ClientCA) > 0 {
|
| 44 | 44 |
if _, err := os.Stat(info.ClientCA); err != nil {
|
| 45 |
- allErrs = append(allErrs, errs.NewFieldInvalid("clientCA", info.ClientCA, "could not read file"))
|
|
| 45 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("clientCA", info.ClientCA, "could not read file"))
|
|
| 46 | 46 |
} |
| 47 | 47 |
} |
| 48 | 48 |
} else {
|
| 49 | 49 |
if len(info.ServerCert.KeyFile) > 0 {
|
| 50 |
- allErrs = append(allErrs, errs.NewFieldInvalid("keyFile", info.ServerCert.KeyFile, "cannot specify a keyFile without a certFile"))
|
|
| 50 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("keyFile", info.ServerCert.KeyFile, "cannot specify a keyFile without a certFile"))
|
|
| 51 | 51 |
} |
| 52 | 52 |
|
| 53 | 53 |
if len(info.ClientCA) > 0 {
|
| 54 |
- allErrs = append(allErrs, errs.NewFieldInvalid("clientCA", info.ClientCA, "cannot specify a clientCA without a certFile"))
|
|
| 54 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("clientCA", info.ClientCA, "cannot specify a clientCA without a certFile"))
|
|
| 55 | 55 |
} |
| 56 | 56 |
} |
| 57 | 57 |
|
| 58 | 58 |
return allErrs |
| 59 | 59 |
} |
| 60 | 60 |
|
| 61 |
-func ValidateKubeConfig(path string, field string) errs.ValidationErrorList {
|
|
| 62 |
- allErrs := errs.ValidationErrorList{}
|
|
| 61 |
+func ValidateKubeConfig(path string, field string) fielderrors.ValidationErrorList {
|
|
| 62 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 63 | 63 |
|
| 64 | 64 |
allErrs = append(allErrs, ValidateFile(path, field)...) |
| 65 | 65 |
// TODO: load and parse |
| ... | ... |
@@ -67,8 +67,8 @@ func ValidateKubeConfig(path string, field string) errs.ValidationErrorList {
|
| 67 | 67 |
return allErrs |
| 68 | 68 |
} |
| 69 | 69 |
|
| 70 |
-func ValidateKubernetesMasterConfig(config *api.KubernetesMasterConfig) errs.ValidationErrorList {
|
|
| 71 |
- allErrs := errs.ValidationErrorList{}
|
|
| 70 |
+func ValidateKubernetesMasterConfig(config *api.KubernetesMasterConfig) fielderrors.ValidationErrorList {
|
|
| 71 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 72 | 72 |
|
| 73 | 73 |
if len(config.MasterIP) > 0 {
|
| 74 | 74 |
allErrs = append(allErrs, ValidateSpecifiedIP(config.MasterIP, "masterIP")...) |
| ... | ... |
@@ -76,7 +76,7 @@ func ValidateKubernetesMasterConfig(config *api.KubernetesMasterConfig) errs.Val |
| 76 | 76 |
|
| 77 | 77 |
if len(config.ServicesSubnet) > 0 {
|
| 78 | 78 |
if _, _, err := net.ParseCIDR(strings.TrimSpace(config.ServicesSubnet)); err != nil {
|
| 79 |
- allErrs = append(allErrs, errs.NewFieldInvalid("servicesSubnet", config.ServicesSubnet, "must be a valid CIDR notation IP range (e.g. 172.30.17.0/24)"))
|
|
| 79 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("servicesSubnet", config.ServicesSubnet, "must be a valid CIDR notation IP range (e.g. 172.30.17.0/24)"))
|
|
| 80 | 80 |
} |
| 81 | 81 |
} |
| 82 | 82 |
|
| ... | ... |
@@ -87,38 +87,38 @@ func ValidateKubernetesMasterConfig(config *api.KubernetesMasterConfig) errs.Val |
| 87 | 87 |
return allErrs |
| 88 | 88 |
} |
| 89 | 89 |
|
| 90 |
-func ValidateSpecifiedIP(ipString string, field string) errs.ValidationErrorList {
|
|
| 91 |
- allErrs := errs.ValidationErrorList{}
|
|
| 90 |
+func ValidateSpecifiedIP(ipString string, field string) fielderrors.ValidationErrorList {
|
|
| 91 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 92 | 92 |
|
| 93 | 93 |
ip := net.ParseIP(ipString) |
| 94 | 94 |
if ip == nil {
|
| 95 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, ipString, "must be a valid IP")) |
|
| 95 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, ipString, "must be a valid IP")) |
|
| 96 | 96 |
} else if ip.IsUnspecified() {
|
| 97 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, ipString, "cannot be an unspecified IP")) |
|
| 97 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, ipString, "cannot be an unspecified IP")) |
|
| 98 | 98 |
} |
| 99 | 99 |
|
| 100 | 100 |
return allErrs |
| 101 | 101 |
} |
| 102 | 102 |
|
| 103 |
-func ValidateURL(urlString string, field string) (*url.URL, errs.ValidationErrorList) {
|
|
| 104 |
- allErrs := errs.ValidationErrorList{}
|
|
| 103 |
+func ValidateURL(urlString string, field string) (*url.URL, fielderrors.ValidationErrorList) {
|
|
| 104 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 105 | 105 |
|
| 106 | 106 |
urlObj, err := url.Parse(urlString) |
| 107 | 107 |
if err != nil {
|
| 108 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, urlString, "must be a valid URL")) |
|
| 108 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, urlString, "must be a valid URL")) |
|
| 109 | 109 |
return nil, allErrs |
| 110 | 110 |
} |
| 111 | 111 |
if len(urlObj.Scheme) == 0 {
|
| 112 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, urlString, "must contain a scheme (e.g. http://)")) |
|
| 112 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, urlString, "must contain a scheme (e.g. http://)")) |
|
| 113 | 113 |
} |
| 114 | 114 |
if len(urlObj.Host) == 0 {
|
| 115 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, urlString, "must contain a host")) |
|
| 115 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, urlString, "must contain a host")) |
|
| 116 | 116 |
} |
| 117 | 117 |
return urlObj, allErrs |
| 118 | 118 |
} |
| 119 | 119 |
|
| 120 |
-func ValidateAssetConfig(config *api.AssetConfig) errs.ValidationErrorList {
|
|
| 121 |
- allErrs := errs.ValidationErrorList{}
|
|
| 120 |
+func ValidateAssetConfig(config *api.AssetConfig) fielderrors.ValidationErrorList {
|
|
| 121 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 122 | 122 |
|
| 123 | 123 |
allErrs = append(allErrs, ValidateServingInfo(config.ServingInfo).Prefix("servingInfo")...)
|
| 124 | 124 |
|
| ... | ... |
@@ -128,15 +128,15 @@ func ValidateAssetConfig(config *api.AssetConfig) errs.ValidationErrorList {
|
| 128 | 128 |
} |
| 129 | 129 |
if urlObj != nil {
|
| 130 | 130 |
if !strings.HasSuffix(urlObj.Path, "/") {
|
| 131 |
- allErrs = append(allErrs, errs.NewFieldInvalid("publicURL", config.PublicURL, "must have a trailing slash in path"))
|
|
| 131 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("publicURL", config.PublicURL, "must have a trailing slash in path"))
|
|
| 132 | 132 |
} |
| 133 | 133 |
} |
| 134 | 134 |
|
| 135 | 135 |
return allErrs |
| 136 | 136 |
} |
| 137 | 137 |
|
| 138 |
-func ValidateMasterConfig(config *api.MasterConfig) errs.ValidationErrorList {
|
|
| 139 |
- allErrs := errs.ValidationErrorList{}
|
|
| 138 |
+func ValidateMasterConfig(config *api.MasterConfig) fielderrors.ValidationErrorList {
|
|
| 139 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 140 | 140 |
|
| 141 | 141 |
allErrs = append(allErrs, ValidateServingInfo(config.ServingInfo).Prefix("servingInfo")...)
|
| 142 | 142 |
|
| ... | ... |
@@ -146,14 +146,14 @@ func ValidateMasterConfig(config *api.MasterConfig) errs.ValidationErrorList {
|
| 146 | 146 |
if colocated {
|
| 147 | 147 |
publicURL, _ := url.Parse(config.AssetConfig.PublicURL) |
| 148 | 148 |
if publicURL.Path == "/" {
|
| 149 |
- allErrs = append(allErrs, errs.NewFieldInvalid("assetConfig.publicURL", config.AssetConfig.PublicURL, "path can not be / when colocated with master API"))
|
|
| 149 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("assetConfig.publicURL", config.AssetConfig.PublicURL, "path can not be / when colocated with master API"))
|
|
| 150 | 150 |
} |
| 151 | 151 |
} |
| 152 | 152 |
|
| 153 | 153 |
if config.OAuthConfig != nil && config.OAuthConfig.AssetPublicURL != config.AssetConfig.PublicURL {
|
| 154 | 154 |
allErrs = append(allErrs, |
| 155 |
- errs.NewFieldInvalid("assetConfig.publicURL", config.AssetConfig.PublicURL, "must match oauthConfig.assetPublicURL"),
|
|
| 156 |
- errs.NewFieldInvalid("oauthConfig.assetPublicURL", config.OAuthConfig.AssetPublicURL, "must match assetConfig.publicURL"),
|
|
| 155 |
+ fielderrors.NewFieldInvalid("assetConfig.publicURL", config.AssetConfig.PublicURL, "must match oauthConfig.assetPublicURL"),
|
|
| 156 |
+ fielderrors.NewFieldInvalid("oauthConfig.assetPublicURL", config.OAuthConfig.AssetPublicURL, "must match assetConfig.publicURL"),
|
|
| 157 | 157 |
) |
| 158 | 158 |
} |
| 159 | 159 |
|
| ... | ... |
@@ -178,8 +178,8 @@ func ValidateMasterConfig(config *api.MasterConfig) errs.ValidationErrorList {
|
| 178 | 178 |
return allErrs |
| 179 | 179 |
} |
| 180 | 180 |
|
| 181 |
-func ValidatePolicyConfig(config api.PolicyConfig) errs.ValidationErrorList {
|
|
| 182 |
- allErrs := errs.ValidationErrorList{}
|
|
| 181 |
+func ValidatePolicyConfig(config api.PolicyConfig) fielderrors.ValidationErrorList {
|
|
| 182 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 183 | 183 |
|
| 184 | 184 |
allErrs = append(allErrs, ValidateFile(config.BootstrapPolicyFile, "bootstrapPolicyFile")...) |
| 185 | 185 |
allErrs = append(allErrs, ValidateNamespace(config.MasterAuthorizationNamespace, "masterAuthorizationNamespace")...) |
| ... | ... |
@@ -188,23 +188,23 @@ func ValidatePolicyConfig(config api.PolicyConfig) errs.ValidationErrorList {
|
| 188 | 188 |
return allErrs |
| 189 | 189 |
} |
| 190 | 190 |
|
| 191 |
-func ValidateNamespace(namespace, field string) errs.ValidationErrorList {
|
|
| 192 |
- allErrs := errs.ValidationErrorList{}
|
|
| 191 |
+func ValidateNamespace(namespace, field string) fielderrors.ValidationErrorList {
|
|
| 192 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 193 | 193 |
|
| 194 | 194 |
if len(namespace) == 0 {
|
| 195 |
- allErrs = append(allErrs, errs.NewFieldRequired(field)) |
|
| 195 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired(field)) |
|
| 196 | 196 |
} else if ok, _ := kvalidation.ValidateNamespaceName(namespace, false); !ok {
|
| 197 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, namespace, "must be a valid namespace")) |
|
| 197 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, namespace, "must be a valid namespace")) |
|
| 198 | 198 |
} |
| 199 | 199 |
|
| 200 | 200 |
return allErrs |
| 201 | 201 |
} |
| 202 | 202 |
|
| 203 |
-func ValidateNodeConfig(config *api.NodeConfig) errs.ValidationErrorList {
|
|
| 204 |
- allErrs := errs.ValidationErrorList{}
|
|
| 203 |
+func ValidateNodeConfig(config *api.NodeConfig) fielderrors.ValidationErrorList {
|
|
| 204 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 205 | 205 |
|
| 206 | 206 |
if len(config.NodeName) == 0 {
|
| 207 |
- allErrs = append(allErrs, errs.NewFieldRequired("nodeName"))
|
|
| 207 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("nodeName"))
|
|
| 208 | 208 |
} |
| 209 | 209 |
|
| 210 | 210 |
allErrs = append(allErrs, ValidateServingInfo(config.ServingInfo).Prefix("servingInfo")...)
|
| ... | ... |
@@ -215,26 +215,26 @@ func ValidateNodeConfig(config *api.NodeConfig) errs.ValidationErrorList {
|
| 215 | 215 |
} |
| 216 | 216 |
|
| 217 | 217 |
if len(config.NetworkContainerImage) == 0 {
|
| 218 |
- allErrs = append(allErrs, errs.NewFieldRequired("networkContainerImage"))
|
|
| 218 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("networkContainerImage"))
|
|
| 219 | 219 |
} |
| 220 | 220 |
|
| 221 | 221 |
return allErrs |
| 222 | 222 |
} |
| 223 | 223 |
|
| 224 |
-func ValidateFile(path string, field string) errs.ValidationErrorList {
|
|
| 225 |
- allErrs := errs.ValidationErrorList{}
|
|
| 224 |
+func ValidateFile(path string, field string) fielderrors.ValidationErrorList {
|
|
| 225 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 226 | 226 |
|
| 227 | 227 |
if len(path) == 0 {
|
| 228 |
- allErrs = append(allErrs, errs.NewFieldRequired(field)) |
|
| 228 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired(field)) |
|
| 229 | 229 |
} else if _, err := os.Stat(path); err != nil {
|
| 230 |
- allErrs = append(allErrs, errs.NewFieldInvalid(field, path, "could not read file")) |
|
| 230 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, path, "could not read file")) |
|
| 231 | 231 |
} |
| 232 | 232 |
|
| 233 | 233 |
return allErrs |
| 234 | 234 |
} |
| 235 | 235 |
|
| 236 |
-func ValidateAllInOneConfig(master *api.MasterConfig, node *api.NodeConfig) errs.ValidationErrorList {
|
|
| 237 |
- allErrs := errs.ValidationErrorList{}
|
|
| 236 |
+func ValidateAllInOneConfig(master *api.MasterConfig, node *api.NodeConfig) fielderrors.ValidationErrorList {
|
|
| 237 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 238 | 238 |
|
| 239 | 239 |
allErrs = append(allErrs, ValidateMasterConfig(master).Prefix("masterConfig")...)
|
| 240 | 240 |
|
| ... | ... |
@@ -131,7 +131,8 @@ func (c *MasterConfig) RunMinionController() {
|
| 131 | 131 |
if err != nil {
|
| 132 | 132 |
glog.Fatalf("Failure to create kubelet client: %v", err)
|
| 133 | 133 |
} |
| 134 |
- minionController := minioncontroller.NewNodeController(nil, "", c.NodeHosts, nodeResources, c.KubeClient, kubeletClient, 10, 5*time.Minute) |
|
| 134 |
+ |
|
| 135 |
+ minionController := minioncontroller.NewNodeController(nil, "", c.NodeHosts, nodeResources, c.KubeClient, kubeletClient, nil, 10, 5*time.Minute) |
|
| 135 | 136 |
minionController.Run(10*time.Second, true, true) |
| 136 | 137 |
|
| 137 | 138 |
glog.Infof("Started Kubernetes Minion Controller")
|
| ... | ... |
@@ -123,7 +123,7 @@ func (c *NodeConfig) RunKubelet() {
|
| 123 | 123 |
// Allow privileged containers |
| 124 | 124 |
// TODO: make this configurable and not the default https://github.com/openshift/origin/issues/662 |
| 125 | 125 |
recorder := record.FromSource(kapi.EventSource{Component: "kubelet", Host: c.NodeHost})
|
| 126 |
- kubelet.SetupCapabilities(true) |
|
| 126 |
+ kubelet.SetupCapabilities(true, []string{})
|
|
| 127 | 127 |
cfg := kconfig.NewPodConfig(kconfig.PodConfigNotificationSnapshotAndUpdates, recorder) |
| 128 | 128 |
kconfig.NewSourceApiserver(c.Client, c.NodeHost, cfg.Channel("api"))
|
| 129 | 129 |
gcPolicy := kubelet.ContainerGCPolicy{
|
| ... | ... |
@@ -156,10 +156,8 @@ func (c *NodeConfig) RunKubelet() {
|
| 156 | 156 |
5*time.Minute, |
| 157 | 157 |
recorder, |
| 158 | 158 |
cadvisorInterface, |
| 159 |
- 20*time.Second, |
|
| 160 |
- 1*time.Minute, |
|
| 161 | 159 |
imageGCPolicy, |
| 162 |
- ) |
|
| 160 |
+ nil) |
|
| 163 | 161 |
if err != nil {
|
| 164 | 162 |
glog.Fatalf("Couldn't run kubelet: %s", err)
|
| 165 | 163 |
} |
| ... | ... |
@@ -23,6 +23,7 @@ import ( |
| 23 | 23 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 24 | 24 |
kapierror "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 25 | 25 |
klatest "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" |
| 26 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 26 | 27 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
| 27 | 28 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 28 | 29 |
kmaster "github.com/GoogleCloudPlatform/kubernetes/pkg/master" |
| ... | ... |
@@ -178,7 +179,7 @@ func (c *MasterConfig) InstallProtectedAPI(container *restful.Container) []strin |
| 178 | 178 |
} |
| 179 | 179 |
|
| 180 | 180 |
// initialize OpenShift API |
| 181 |
- storage := map[string]apiserver.RESTStorage{
|
|
| 181 |
+ storage := map[string]rest.Storage{
|
|
| 182 | 182 |
"builds": buildregistry.NewREST(buildEtcd), |
| 183 | 183 |
"builds/clone": buildClone, |
| 184 | 184 |
"buildConfigs": buildconfigregistry.NewREST(buildEtcd), |
| ... | ... |
@@ -6,7 +6,6 @@ import ( |
| 6 | 6 |
"net/url" |
| 7 | 7 |
"strconv" |
| 8 | 8 |
|
| 9 |
- "github.com/ghodss/yaml" |
|
| 10 | 9 |
"github.com/spf13/pflag" |
| 11 | 10 |
|
| 12 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| ... | ... |
@@ -17,6 +16,8 @@ import ( |
| 17 | 17 |
latestconfigapi "github.com/openshift/origin/pkg/cmd/server/api/latest" |
| 18 | 18 |
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy" |
| 19 | 19 |
cmdutil "github.com/openshift/origin/pkg/cmd/util" |
| 20 |
+ |
|
| 21 |
+ "github.com/ghodss/yaml" |
|
| 20 | 22 |
) |
| 21 | 23 |
|
| 22 | 24 |
// MasterArgs is a struct that the command stores flag values into. It holds a partially complete set of parameters for starting the master |
| ... | ... |
@@ -385,7 +386,6 @@ func (args MasterArgs) GetEtcdAddress() (*url.URL, error) {
|
| 385 | 385 |
etcdAddr := net.JoinHostPort(getHost(*masterAddr), strconv.Itoa(args.EtcdAddr.DefaultPort)) |
| 386 | 386 |
return url.Parse(args.EtcdAddr.DefaultScheme + "://" + etcdAddr) |
| 387 | 387 |
} |
| 388 |
- |
|
| 389 | 388 |
func (args MasterArgs) GetKubernetesPublicAddress() (*url.URL, error) {
|
| 390 | 389 |
if args.KubernetesPublicAddr.Provided {
|
| 391 | 390 |
return args.KubernetesPublicAddr.URL, nil |
| ... | ... |
@@ -444,9 +444,10 @@ func WriteMaster(config *configapi.MasterConfig) ([]byte, error) {
|
| 444 | 444 |
if err != nil {
|
| 445 | 445 |
return nil, err |
| 446 | 446 |
} |
| 447 |
+ |
|
| 447 | 448 |
content, err := yaml.JSONToYAML(json) |
| 448 | 449 |
if err != nil {
|
| 449 | 450 |
return nil, err |
| 450 | 451 |
} |
| 451 |
- return content, nil |
|
| 452 |
+ return content, err |
|
| 452 | 453 |
} |
| ... | ... |
@@ -9,7 +9,6 @@ import ( |
| 9 | 9 |
"strings" |
| 10 | 10 |
|
| 11 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/master/ports" |
| 12 |
- "github.com/ghodss/yaml" |
|
| 13 | 12 |
"github.com/golang/glog" |
| 14 | 13 |
"github.com/spf13/pflag" |
| 15 | 14 |
|
| ... | ... |
@@ -110,11 +109,7 @@ func WriteNode(config *configapi.NodeConfig) ([]byte, error) {
|
| 110 | 110 |
if err != nil {
|
| 111 | 111 |
return nil, err |
| 112 | 112 |
} |
| 113 |
- content, err := yaml.JSONToYAML(json) |
|
| 114 |
- if err != nil {
|
|
| 115 |
- return nil, err |
|
| 116 |
- } |
|
| 117 |
- return content, nil |
|
| 113 |
+ return json, err |
|
| 118 | 114 |
} |
| 119 | 115 |
|
| 120 | 116 |
// defaultHostname returns the default hostname for this system. |
| ... | ... |
@@ -20,6 +20,7 @@ import ( |
| 20 | 20 |
_ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/admit" |
| 21 | 21 |
_ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/limitranger" |
| 22 | 22 |
_ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/namespace/exists" |
| 23 |
+ _ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/namespace/lifecycle" |
|
| 23 | 24 |
_ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/resourcedefaults" |
| 24 | 25 |
_ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/admission/resourcequota" |
| 25 | 26 |
) |
| ... | ... |
@@ -16,6 +16,7 @@ import ( |
| 16 | 16 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/capabilities" |
| 17 | 17 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/record" |
| 18 | 18 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 19 |
+ kyaml "github.com/GoogleCloudPlatform/kubernetes/pkg/util/yaml" |
|
| 19 | 20 |
|
| 20 | 21 |
"github.com/openshift/origin/pkg/cmd/server/admin" |
| 21 | 22 |
configapi "github.com/openshift/origin/pkg/cmd/server/api" |
| ... | ... |
@@ -277,7 +278,7 @@ func ReadMasterConfig(filename string) (*configapi.MasterConfig, error) {
|
| 277 | 277 |
} |
| 278 | 278 |
|
| 279 | 279 |
config := &configapi.MasterConfig{}
|
| 280 |
- |
|
| 280 |
+ data, err = kyaml.ToJSON(data) |
|
| 281 | 281 |
if err := configapilatest.Codec.DecodeInto(data, config); err != nil {
|
| 282 | 282 |
return nil, err |
| 283 | 283 |
} |
| ... | ... |
@@ -1,9 +1,9 @@ |
| 1 | 1 |
package validation |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 5 | 4 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 6 | 5 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 6 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 7 | 7 |
|
| 8 | 8 |
deployapi "github.com/openshift/origin/pkg/deploy/api" |
| 9 | 9 |
) |
| ... | ... |
@@ -12,34 +12,34 @@ import ( |
| 12 | 12 |
// The upstream validation API isn't factored currently to allow this; we'll make a PR to |
| 13 | 13 |
// upstream and fix when it goes in. |
| 14 | 14 |
|
| 15 |
-func ValidateDeployment(deployment *deployapi.Deployment) errors.ValidationErrorList {
|
|
| 15 |
+func ValidateDeployment(deployment *deployapi.Deployment) fielderrors.ValidationErrorList {
|
|
| 16 | 16 |
errs := validateDeploymentStrategy(&deployment.Strategy).Prefix("strategy")
|
| 17 | 17 |
if len(deployment.Name) == 0 {
|
| 18 |
- errs = append(errs, errors.NewFieldRequired("name"))
|
|
| 18 |
+ errs = append(errs, fielderrors.NewFieldRequired("name"))
|
|
| 19 | 19 |
} else if !util.IsDNS1123Subdomain(deployment.Name) {
|
| 20 |
- errs = append(errs, errors.NewFieldInvalid("name", deployment.Name, "name must be a valid subdomain"))
|
|
| 20 |
+ errs = append(errs, fielderrors.NewFieldInvalid("name", deployment.Name, "name must be a valid subdomain"))
|
|
| 21 | 21 |
} |
| 22 | 22 |
if len(deployment.Namespace) == 0 {
|
| 23 |
- errs = append(errs, errors.NewFieldRequired("namespace"))
|
|
| 23 |
+ errs = append(errs, fielderrors.NewFieldRequired("namespace"))
|
|
| 24 | 24 |
} else if !util.IsDNS1123Subdomain(deployment.Namespace) {
|
| 25 |
- errs = append(errs, errors.NewFieldInvalid("namespace", deployment.Namespace, "namespace must be a valid subdomain"))
|
|
| 25 |
+ errs = append(errs, fielderrors.NewFieldInvalid("namespace", deployment.Namespace, "namespace must be a valid subdomain"))
|
|
| 26 | 26 |
} |
| 27 | 27 |
errs = append(errs, validation.ValidateLabels(deployment.Labels, "labels")...) |
| 28 | 28 |
errs = append(errs, validation.ValidateReplicationControllerSpec(&deployment.ControllerTemplate).Prefix("controllerTemplate")...)
|
| 29 | 29 |
return errs |
| 30 | 30 |
} |
| 31 | 31 |
|
| 32 |
-func ValidateDeploymentConfig(config *deployapi.DeploymentConfig) errors.ValidationErrorList {
|
|
| 33 |
- errs := errors.ValidationErrorList{}
|
|
| 32 |
+func ValidateDeploymentConfig(config *deployapi.DeploymentConfig) fielderrors.ValidationErrorList {
|
|
| 33 |
+ errs := fielderrors.ValidationErrorList{}
|
|
| 34 | 34 |
if len(config.Name) == 0 {
|
| 35 |
- errs = append(errs, errors.NewFieldRequired("name"))
|
|
| 35 |
+ errs = append(errs, fielderrors.NewFieldRequired("name"))
|
|
| 36 | 36 |
} else if !util.IsDNS1123Subdomain(config.Name) {
|
| 37 |
- errs = append(errs, errors.NewFieldInvalid("name", config.Name, "name must be a valid subdomain"))
|
|
| 37 |
+ errs = append(errs, fielderrors.NewFieldInvalid("name", config.Name, "name must be a valid subdomain"))
|
|
| 38 | 38 |
} |
| 39 | 39 |
if len(config.Namespace) == 0 {
|
| 40 |
- errs = append(errs, errors.NewFieldRequired("namespace"))
|
|
| 40 |
+ errs = append(errs, fielderrors.NewFieldRequired("namespace"))
|
|
| 41 | 41 |
} else if !util.IsDNS1123Subdomain(config.Namespace) {
|
| 42 |
- errs = append(errs, errors.NewFieldInvalid("namespace", config.Namespace, "namespace must be a valid subdomain"))
|
|
| 42 |
+ errs = append(errs, fielderrors.NewFieldInvalid("namespace", config.Namespace, "namespace must be a valid subdomain"))
|
|
| 43 | 43 |
} |
| 44 | 44 |
errs = append(errs, validation.ValidateLabels(config.Labels, "labels")...) |
| 45 | 45 |
|
| ... | ... |
@@ -51,11 +51,11 @@ func ValidateDeploymentConfig(config *deployapi.DeploymentConfig) errors.Validat |
| 51 | 51 |
return errs |
| 52 | 52 |
} |
| 53 | 53 |
|
| 54 |
-func ValidateDeploymentConfigRollback(rollback *deployapi.DeploymentConfigRollback) errors.ValidationErrorList {
|
|
| 55 |
- result := errors.ValidationErrorList{}
|
|
| 54 |
+func ValidateDeploymentConfigRollback(rollback *deployapi.DeploymentConfigRollback) fielderrors.ValidationErrorList {
|
|
| 55 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 56 | 56 |
|
| 57 | 57 |
if len(rollback.Spec.From.Name) == 0 {
|
| 58 |
- result = append(result, errors.NewFieldRequired("spec.from.name"))
|
|
| 58 |
+ result = append(result, fielderrors.NewFieldRequired("spec.from.name"))
|
|
| 59 | 59 |
} |
| 60 | 60 |
|
| 61 | 61 |
if len(rollback.Spec.From.Kind) == 0 {
|
| ... | ... |
@@ -63,23 +63,23 @@ func ValidateDeploymentConfigRollback(rollback *deployapi.DeploymentConfigRollba |
| 63 | 63 |
} |
| 64 | 64 |
|
| 65 | 65 |
if rollback.Spec.From.Kind != "ReplicationController" {
|
| 66 |
- result = append(result, errors.NewFieldInvalid("spec.from.kind", rollback.Spec.From.Kind, "the kind of the rollback target must be 'ReplicationController'"))
|
|
| 66 |
+ result = append(result, fielderrors.NewFieldInvalid("spec.from.kind", rollback.Spec.From.Kind, "the kind of the rollback target must be 'ReplicationController'"))
|
|
| 67 | 67 |
} |
| 68 | 68 |
|
| 69 | 69 |
return result |
| 70 | 70 |
} |
| 71 | 71 |
|
| 72 |
-func validateDeploymentStrategy(strategy *deployapi.DeploymentStrategy) errors.ValidationErrorList {
|
|
| 73 |
- errs := errors.ValidationErrorList{}
|
|
| 72 |
+func validateDeploymentStrategy(strategy *deployapi.DeploymentStrategy) fielderrors.ValidationErrorList {
|
|
| 73 |
+ errs := fielderrors.ValidationErrorList{}
|
|
| 74 | 74 |
|
| 75 | 75 |
if len(strategy.Type) == 0 {
|
| 76 |
- errs = append(errs, errors.NewFieldRequired("type"))
|
|
| 76 |
+ errs = append(errs, fielderrors.NewFieldRequired("type"))
|
|
| 77 | 77 |
} |
| 78 | 78 |
|
| 79 | 79 |
switch strategy.Type {
|
| 80 | 80 |
case deployapi.DeploymentStrategyTypeCustom: |
| 81 | 81 |
if strategy.CustomParams == nil {
|
| 82 |
- errs = append(errs, errors.NewFieldRequired("customParams"))
|
|
| 82 |
+ errs = append(errs, fielderrors.NewFieldRequired("customParams"))
|
|
| 83 | 83 |
} else {
|
| 84 | 84 |
errs = append(errs, validateCustomParams(strategy.CustomParams).Prefix("customParams")...)
|
| 85 | 85 |
} |
| ... | ... |
@@ -88,26 +88,26 @@ func validateDeploymentStrategy(strategy *deployapi.DeploymentStrategy) errors.V |
| 88 | 88 |
return errs |
| 89 | 89 |
} |
| 90 | 90 |
|
| 91 |
-func validateCustomParams(params *deployapi.CustomDeploymentStrategyParams) errors.ValidationErrorList {
|
|
| 92 |
- errs := errors.ValidationErrorList{}
|
|
| 91 |
+func validateCustomParams(params *deployapi.CustomDeploymentStrategyParams) fielderrors.ValidationErrorList {
|
|
| 92 |
+ errs := fielderrors.ValidationErrorList{}
|
|
| 93 | 93 |
|
| 94 | 94 |
if len(params.Image) == 0 {
|
| 95 |
- errs = append(errs, errors.NewFieldRequired("image"))
|
|
| 95 |
+ errs = append(errs, fielderrors.NewFieldRequired("image"))
|
|
| 96 | 96 |
} |
| 97 | 97 |
|
| 98 | 98 |
return errs |
| 99 | 99 |
} |
| 100 | 100 |
|
| 101 |
-func validateTrigger(trigger *deployapi.DeploymentTriggerPolicy) errors.ValidationErrorList {
|
|
| 102 |
- errs := errors.ValidationErrorList{}
|
|
| 101 |
+func validateTrigger(trigger *deployapi.DeploymentTriggerPolicy) fielderrors.ValidationErrorList {
|
|
| 102 |
+ errs := fielderrors.ValidationErrorList{}
|
|
| 103 | 103 |
|
| 104 | 104 |
if len(trigger.Type) == 0 {
|
| 105 |
- errs = append(errs, errors.NewFieldRequired("type"))
|
|
| 105 |
+ errs = append(errs, fielderrors.NewFieldRequired("type"))
|
|
| 106 | 106 |
} |
| 107 | 107 |
|
| 108 | 108 |
if trigger.Type == deployapi.DeploymentTriggerOnImageChange {
|
| 109 | 109 |
if trigger.ImageChangeParams == nil {
|
| 110 |
- errs = append(errs, errors.NewFieldRequired("imageChangeParams"))
|
|
| 110 |
+ errs = append(errs, fielderrors.NewFieldRequired("imageChangeParams"))
|
|
| 111 | 111 |
} else {
|
| 112 | 112 |
errs = append(errs, validateImageChangeParams(trigger.ImageChangeParams).Prefix("imageChangeParams")...)
|
| 113 | 113 |
} |
| ... | ... |
@@ -116,35 +116,35 @@ func validateTrigger(trigger *deployapi.DeploymentTriggerPolicy) errors.Validati |
| 116 | 116 |
return errs |
| 117 | 117 |
} |
| 118 | 118 |
|
| 119 |
-func validateImageChangeParams(params *deployapi.DeploymentTriggerImageChangeParams) errors.ValidationErrorList {
|
|
| 120 |
- errs := errors.ValidationErrorList{}
|
|
| 119 |
+func validateImageChangeParams(params *deployapi.DeploymentTriggerImageChangeParams) fielderrors.ValidationErrorList {
|
|
| 120 |
+ errs := fielderrors.ValidationErrorList{}
|
|
| 121 | 121 |
|
| 122 | 122 |
if len(params.From.Name) != 0 {
|
| 123 | 123 |
if len(params.From.Kind) == 0 {
|
| 124 | 124 |
params.From.Kind = "ImageRepository" |
| 125 | 125 |
} |
| 126 | 126 |
if params.From.Kind != "ImageRepository" {
|
| 127 |
- errs = append(errs, errors.NewFieldInvalid("from.kind", params.From.Kind, "only 'ImageRepository' is allowed"))
|
|
| 127 |
+ errs = append(errs, fielderrors.NewFieldInvalid("from.kind", params.From.Kind, "only 'ImageRepository' is allowed"))
|
|
| 128 | 128 |
} |
| 129 | 129 |
|
| 130 | 130 |
if !util.IsDNS1123Subdomain(params.From.Name) {
|
| 131 |
- errs = append(errs, errors.NewFieldInvalid("from.name", params.From.Name, "name must be a valid subdomain"))
|
|
| 131 |
+ errs = append(errs, fielderrors.NewFieldInvalid("from.name", params.From.Name, "name must be a valid subdomain"))
|
|
| 132 | 132 |
} |
| 133 | 133 |
if len(params.From.Namespace) != 0 && !util.IsDNS1123Subdomain(params.From.Namespace) {
|
| 134 |
- errs = append(errs, errors.NewFieldInvalid("from.namespace", params.From.Namespace, "namespace must be a valid subdomain"))
|
|
| 134 |
+ errs = append(errs, fielderrors.NewFieldInvalid("from.namespace", params.From.Namespace, "namespace must be a valid subdomain"))
|
|
| 135 | 135 |
} |
| 136 | 136 |
|
| 137 | 137 |
if len(params.RepositoryName) != 0 {
|
| 138 |
- errs = append(errs, errors.NewFieldInvalid("repositoryName", params.RepositoryName, "only one of 'from', 'repository' name may be specified"))
|
|
| 138 |
+ errs = append(errs, fielderrors.NewFieldInvalid("repositoryName", params.RepositoryName, "only one of 'from', 'repository' name may be specified"))
|
|
| 139 | 139 |
} |
| 140 | 140 |
} else {
|
| 141 | 141 |
if len(params.RepositoryName) == 0 {
|
| 142 |
- errs = append(errs, errors.NewFieldRequired("from"))
|
|
| 142 |
+ errs = append(errs, fielderrors.NewFieldRequired("from"))
|
|
| 143 | 143 |
} |
| 144 | 144 |
} |
| 145 | 145 |
|
| 146 | 146 |
if len(params.ContainerNames) == 0 {
|
| 147 |
- errs = append(errs, errors.NewFieldRequired("containerNames"))
|
|
| 147 |
+ errs = append(errs, fielderrors.NewFieldRequired("containerNames"))
|
|
| 148 | 148 |
} |
| 149 | 149 |
|
| 150 | 150 |
return errs |
| ... | ... |
@@ -4,7 +4,7 @@ import ( |
| 4 | 4 |
"testing" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 8 | 8 |
|
| 9 | 9 |
"github.com/openshift/origin/pkg/deploy/api" |
| 10 | 10 |
"github.com/openshift/origin/pkg/deploy/api/test" |
| ... | ... |
@@ -36,7 +36,7 @@ func TestValidateDeploymentOK(t *testing.T) {
|
| 36 | 36 |
func TestValidateDeploymentMissingFields(t *testing.T) {
|
| 37 | 37 |
errorCases := map[string]struct {
|
| 38 | 38 |
D api.Deployment |
| 39 |
- T errors.ValidationErrorType |
|
| 39 |
+ T fielderrors.ValidationErrorType |
|
| 40 | 40 |
F string |
| 41 | 41 |
}{
|
| 42 | 42 |
"missing strategy.type": {
|
| ... | ... |
@@ -45,7 +45,7 @@ func TestValidateDeploymentMissingFields(t *testing.T) {
|
| 45 | 45 |
Strategy: api.DeploymentStrategy{},
|
| 46 | 46 |
ControllerTemplate: test.OkControllerTemplate(), |
| 47 | 47 |
}, |
| 48 |
- errors.ValidationErrorTypeRequired, |
|
| 48 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 49 | 49 |
"strategy.type", |
| 50 | 50 |
}, |
| 51 | 51 |
} |
| ... | ... |
@@ -56,10 +56,10 @@ func TestValidateDeploymentMissingFields(t *testing.T) {
|
| 56 | 56 |
t.Errorf("Expected failure for scenario %s", k)
|
| 57 | 57 |
} |
| 58 | 58 |
for i := range errs {
|
| 59 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 59 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 60 | 60 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 61 | 61 |
} |
| 62 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 62 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 63 | 63 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 64 | 64 |
} |
| 65 | 65 |
} |
| ... | ... |
@@ -81,7 +81,7 @@ func TestValidateDeploymentConfigOK(t *testing.T) {
|
| 81 | 81 |
func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 82 | 82 |
errorCases := map[string]struct {
|
| 83 | 83 |
D api.DeploymentConfig |
| 84 |
- T errors.ValidationErrorType |
|
| 84 |
+ T fielderrors.ValidationErrorType |
|
| 85 | 85 |
F string |
| 86 | 86 |
}{
|
| 87 | 87 |
"missing name": {
|
| ... | ... |
@@ -89,7 +89,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 89 | 89 |
ObjectMeta: kapi.ObjectMeta{Name: "", Namespace: "bar"},
|
| 90 | 90 |
Template: test.OkDeploymentTemplate(), |
| 91 | 91 |
}, |
| 92 |
- errors.ValidationErrorTypeRequired, |
|
| 92 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 93 | 93 |
"name", |
| 94 | 94 |
}, |
| 95 | 95 |
"missing namespace": {
|
| ... | ... |
@@ -97,7 +97,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 97 | 97 |
ObjectMeta: kapi.ObjectMeta{Name: "foo", Namespace: ""},
|
| 98 | 98 |
Template: test.OkDeploymentTemplate(), |
| 99 | 99 |
}, |
| 100 |
- errors.ValidationErrorTypeRequired, |
|
| 100 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 101 | 101 |
"namespace", |
| 102 | 102 |
}, |
| 103 | 103 |
"invalid name": {
|
| ... | ... |
@@ -105,7 +105,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 105 | 105 |
ObjectMeta: kapi.ObjectMeta{Name: "-foo", Namespace: "bar"},
|
| 106 | 106 |
Template: test.OkDeploymentTemplate(), |
| 107 | 107 |
}, |
| 108 |
- errors.ValidationErrorTypeInvalid, |
|
| 108 |
+ fielderrors.ValidationErrorTypeInvalid, |
|
| 109 | 109 |
"name", |
| 110 | 110 |
}, |
| 111 | 111 |
"invalid namespace": {
|
| ... | ... |
@@ -113,7 +113,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 113 | 113 |
ObjectMeta: kapi.ObjectMeta{Name: "foo", Namespace: "-bar"},
|
| 114 | 114 |
Template: test.OkDeploymentTemplate(), |
| 115 | 115 |
}, |
| 116 |
- errors.ValidationErrorTypeInvalid, |
|
| 116 |
+ fielderrors.ValidationErrorTypeInvalid, |
|
| 117 | 117 |
"namespace", |
| 118 | 118 |
}, |
| 119 | 119 |
|
| ... | ... |
@@ -129,7 +129,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 129 | 129 |
}, |
| 130 | 130 |
Template: test.OkDeploymentTemplate(), |
| 131 | 131 |
}, |
| 132 |
- errors.ValidationErrorTypeRequired, |
|
| 132 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 133 | 133 |
"triggers[0].type", |
| 134 | 134 |
}, |
| 135 | 135 |
"missing Trigger imageChangeParams.from": {
|
| ... | ... |
@@ -145,7 +145,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 145 | 145 |
}, |
| 146 | 146 |
Template: test.OkDeploymentTemplate(), |
| 147 | 147 |
}, |
| 148 |
- errors.ValidationErrorTypeRequired, |
|
| 148 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 149 | 149 |
"triggers[0].imageChangeParams.from", |
| 150 | 150 |
}, |
| 151 | 151 |
"both fields illegal Trigger imageChangeParams.repositoryName": {
|
| ... | ... |
@@ -165,7 +165,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 165 | 165 |
}, |
| 166 | 166 |
Template: test.OkDeploymentTemplate(), |
| 167 | 167 |
}, |
| 168 |
- errors.ValidationErrorTypeInvalid, |
|
| 168 |
+ fielderrors.ValidationErrorTypeInvalid, |
|
| 169 | 169 |
"triggers[0].imageChangeParams.repositoryName", |
| 170 | 170 |
}, |
| 171 | 171 |
"missing Trigger imageChangeParams.containerNames": {
|
| ... | ... |
@@ -181,7 +181,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 181 | 181 |
}, |
| 182 | 182 |
Template: test.OkDeploymentTemplate(), |
| 183 | 183 |
}, |
| 184 |
- errors.ValidationErrorTypeRequired, |
|
| 184 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 185 | 185 |
"triggers[0].imageChangeParams.containerNames", |
| 186 | 186 |
}, |
| 187 | 187 |
"missing strategy.type": {
|
| ... | ... |
@@ -195,7 +195,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 195 | 195 |
ControllerTemplate: test.OkControllerTemplate(), |
| 196 | 196 |
}, |
| 197 | 197 |
}, |
| 198 |
- errors.ValidationErrorTypeRequired, |
|
| 198 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 199 | 199 |
"template.strategy.type", |
| 200 | 200 |
}, |
| 201 | 201 |
"missing strategy.customParams": {
|
| ... | ... |
@@ -209,7 +209,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 209 | 209 |
ControllerTemplate: test.OkControllerTemplate(), |
| 210 | 210 |
}, |
| 211 | 211 |
}, |
| 212 |
- errors.ValidationErrorTypeRequired, |
|
| 212 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 213 | 213 |
"template.strategy.customParams", |
| 214 | 214 |
}, |
| 215 | 215 |
"missing template.strategy.customParams.image": {
|
| ... | ... |
@@ -224,7 +224,7 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 224 | 224 |
ControllerTemplate: test.OkControllerTemplate(), |
| 225 | 225 |
}, |
| 226 | 226 |
}, |
| 227 |
- errors.ValidationErrorTypeRequired, |
|
| 227 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 228 | 228 |
"template.strategy.customParams.image", |
| 229 | 229 |
}, |
| 230 | 230 |
} |
| ... | ... |
@@ -235,10 +235,10 @@ func TestValidateDeploymentConfigMissingFields(t *testing.T) {
|
| 235 | 235 |
t.Errorf("Expected failure for scenario %s", k)
|
| 236 | 236 |
} |
| 237 | 237 |
for i := range errs {
|
| 238 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 238 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 239 | 239 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 240 | 240 |
} |
| 241 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 241 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 242 | 242 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 243 | 243 |
} |
| 244 | 244 |
} |
| ... | ... |
@@ -267,7 +267,7 @@ func TestValidateDeploymentConfigRollbackOK(t *testing.T) {
|
| 267 | 267 |
func TestValidateDeploymentConfigRollbackInvalidFields(t *testing.T) {
|
| 268 | 268 |
errorCases := map[string]struct {
|
| 269 | 269 |
D api.DeploymentConfigRollback |
| 270 |
- T errors.ValidationErrorType |
|
| 270 |
+ T fielderrors.ValidationErrorType |
|
| 271 | 271 |
F string |
| 272 | 272 |
}{
|
| 273 | 273 |
"missing spec.from.name": {
|
| ... | ... |
@@ -276,7 +276,7 @@ func TestValidateDeploymentConfigRollbackInvalidFields(t *testing.T) {
|
| 276 | 276 |
From: kapi.ObjectReference{},
|
| 277 | 277 |
}, |
| 278 | 278 |
}, |
| 279 |
- errors.ValidationErrorTypeRequired, |
|
| 279 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 280 | 280 |
"spec.from.name", |
| 281 | 281 |
}, |
| 282 | 282 |
"wrong spec.from.kind": {
|
| ... | ... |
@@ -288,7 +288,7 @@ func TestValidateDeploymentConfigRollbackInvalidFields(t *testing.T) {
|
| 288 | 288 |
}, |
| 289 | 289 |
}, |
| 290 | 290 |
}, |
| 291 |
- errors.ValidationErrorTypeInvalid, |
|
| 291 |
+ fielderrors.ValidationErrorTypeInvalid, |
|
| 292 | 292 |
"spec.from.kind", |
| 293 | 293 |
}, |
| 294 | 294 |
} |
| ... | ... |
@@ -299,10 +299,10 @@ func TestValidateDeploymentConfigRollbackInvalidFields(t *testing.T) {
|
| 299 | 299 |
t.Errorf("Expected failure for scenario %s", k)
|
| 300 | 300 |
} |
| 301 | 301 |
for i := range errs {
|
| 302 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 302 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 303 | 303 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 304 | 304 |
} |
| 305 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 305 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 306 | 306 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 307 | 307 |
} |
| 308 | 308 |
} |
| ... | ... |
@@ -42,7 +42,7 @@ func (c *DeployerPodController) Handle(pod *kapi.Pod) error {
|
| 42 | 42 |
case kapi.PodSucceeded, kapi.PodFailed: |
| 43 | 43 |
nextStatus = deployapi.DeploymentStatusComplete |
| 44 | 44 |
// Detect failure based on the container state |
| 45 |
- for _, info := range pod.Status.Info {
|
|
| 45 |
+ for _, info := range pod.Status.ContainerStatuses {
|
|
| 46 | 46 |
if info.State.Termination != nil && info.State.Termination.ExitCode != 0 {
|
| 47 | 47 |
nextStatus = deployapi.DeploymentStatusFailed |
| 48 | 48 |
} |
| ... | ... |
@@ -169,8 +169,8 @@ func okPod() *kapi.Pod {
|
| 169 | 169 |
}, |
| 170 | 170 |
}, |
| 171 | 171 |
Status: kapi.PodStatus{
|
| 172 |
- Info: kapi.PodInfo{
|
|
| 173 |
- "container1": kapi.ContainerStatus{},
|
|
| 172 |
+ ContainerStatuses: []kapi.ContainerStatus{
|
|
| 173 |
+ {},
|
|
| 174 | 174 |
}, |
| 175 | 175 |
}, |
| 176 | 176 |
} |
| ... | ... |
@@ -185,10 +185,12 @@ func succeededPod() *kapi.Pod {
|
| 185 | 185 |
func failedPod() *kapi.Pod {
|
| 186 | 186 |
p := okPod() |
| 187 | 187 |
p.Status.Phase = kapi.PodFailed |
| 188 |
- p.Status.Info["container1"] = kapi.ContainerStatus{
|
|
| 189 |
- State: kapi.ContainerState{
|
|
| 190 |
- Termination: &kapi.ContainerStateTerminated{
|
|
| 191 |
- ExitCode: 1, |
|
| 188 |
+ p.Status.ContainerStatuses = []kapi.ContainerStatus{
|
|
| 189 |
+ {
|
|
| 190 |
+ State: kapi.ContainerState{
|
|
| 191 |
+ Termination: &kapi.ContainerStateTerminated{
|
|
| 192 |
+ ExitCode: 1, |
|
| 193 |
+ }, |
|
| 192 | 194 |
}, |
| 193 | 195 |
}, |
| 194 | 196 |
} |
| ... | ... |
@@ -8,6 +8,7 @@ import ( |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 9 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 10 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 11 | 12 |
|
| 12 | 13 |
deployapi "github.com/openshift/origin/pkg/deploy/api" |
| 13 | 14 |
imageapi "github.com/openshift/origin/pkg/image/api" |
| ... | ... |
@@ -135,17 +136,17 @@ func findReferences(dc *deployapi.DeploymentConfig) (refs triggersByRef, legacy |
| 135 | 135 |
} |
| 136 | 136 |
|
| 137 | 137 |
// retrieveReferences loads the repositories referenced by a deployment config |
| 138 |
-func retrieveReferences(client GeneratorClient, ctx kapi.Context, refs triggersByRef, legacy triggersByName) errors.ValidationErrorList {
|
|
| 139 |
- errs := errors.ValidationErrorList{}
|
|
| 138 |
+func retrieveReferences(client GeneratorClient, ctx kapi.Context, refs triggersByRef, legacy triggersByName) fielderrors.ValidationErrorList {
|
|
| 139 |
+ errs := fielderrors.ValidationErrorList{}
|
|
| 140 | 140 |
|
| 141 | 141 |
// fetch repositories directly |
| 142 | 142 |
for k, v := range refs {
|
| 143 | 143 |
repo, err := client.GetImageRepository(kapi.WithNamespace(ctx, k.namespace), k.name) |
| 144 | 144 |
if err != nil {
|
| 145 | 145 |
if errors.IsNotFound(err) {
|
| 146 |
- errs = append(errs, errors.NewFieldNotFound(v.field, k.name)) |
|
| 146 |
+ errs = append(errs, fielderrors.NewFieldNotFound(v.field, k.name)) |
|
| 147 | 147 |
} else {
|
| 148 |
- errs = append(errs, errors.NewFieldInvalid(v.field, k.name, err.Error())) |
|
| 148 |
+ errs = append(errs, fielderrors.NewFieldInvalid(v.field, k.name, err.Error())) |
|
| 149 | 149 |
} |
| 150 | 150 |
continue |
| 151 | 151 |
} |
| ... | ... |
@@ -172,7 +173,7 @@ func retrieveReferences(client GeneratorClient, ctx kapi.Context, refs triggersB |
| 172 | 172 |
repos, err := client.ListImageRepositories(ctx) |
| 173 | 173 |
if err != nil {
|
| 174 | 174 |
for k, ref := range missing {
|
| 175 |
- errs = append(errs, errors.NewFieldInvalid(ref.field, k, err.Error())) |
|
| 175 |
+ errs = append(errs, fielderrors.NewFieldInvalid(ref.field, k, err.Error())) |
|
| 176 | 176 |
} |
| 177 | 177 |
return errs |
| 178 | 178 |
} |
| ... | ... |
@@ -186,7 +187,7 @@ func retrieveReferences(client GeneratorClient, ctx kapi.Context, refs triggersB |
| 186 | 186 |
} |
| 187 | 187 |
} |
| 188 | 188 |
if ref.repo == nil {
|
| 189 |
- errs = append(errs, errors.NewFieldNotFound(ref.field, k)) |
|
| 189 |
+ errs = append(errs, fielderrors.NewFieldNotFound(ref.field, k)) |
|
| 190 | 190 |
} |
| 191 | 191 |
} |
| 192 | 192 |
} |
| ... | ... |
@@ -210,11 +211,11 @@ func referencesByIndex(refs triggersByRef, legacy triggersByName) reposByIndex {
|
| 210 | 210 |
return repos |
| 211 | 211 |
} |
| 212 | 212 |
|
| 213 |
-func replaceReferences(dc *deployapi.DeploymentConfig, repos reposByIndex) (changed bool, errs errors.ValidationErrorList) {
|
|
| 213 |
+func replaceReferences(dc *deployapi.DeploymentConfig, repos reposByIndex) (changed bool, errs fielderrors.ValidationErrorList) {
|
|
| 214 | 214 |
template := dc.Template.ControllerTemplate.Template |
| 215 | 215 |
for i, repo := range repos {
|
| 216 | 216 |
if len(repo.Status.DockerImageRepository) == 0 {
|
| 217 |
- errs = append(errs, errors.NewFieldInvalid(fmt.Sprintf("triggers[%d].imageChange.from", i), repo.Name, fmt.Sprintf("image repository %s/%s does not have a Docker image repository reference set and can't be used in a deployment config trigger", repo.Namespace, repo.Name)))
|
|
| 217 |
+ errs = append(errs, fielderrors.NewFieldInvalid(fmt.Sprintf("triggers[%d].imageChange.from", i), repo.Name, fmt.Sprintf("image repository %s/%s does not have a Docker image repository reference set and can't be used in a deployment config trigger", repo.Namespace, repo.Name)))
|
|
| 218 | 218 |
continue |
| 219 | 219 |
} |
| 220 | 220 |
params := dc.Triggers[i].ImageChangeParams |
| ... | ... |
@@ -222,7 +223,7 @@ func replaceReferences(dc *deployapi.DeploymentConfig, repos reposByIndex) (chan |
| 222 | 222 |
// get the image ref from the repo's tag history |
| 223 | 223 |
latest, err := imageapi.LatestTaggedImage(repo, params.Tag) |
| 224 | 224 |
if err != nil {
|
| 225 |
- errs = append(errs, errors.NewFieldInvalid(fmt.Sprintf("triggers[%d].imageChange.from", i), repo.Name, err.Error()))
|
|
| 225 |
+ errs = append(errs, fielderrors.NewFieldInvalid(fmt.Sprintf("triggers[%d].imageChange.from", i), repo.Name, err.Error()))
|
|
| 226 | 226 |
continue |
| 227 | 227 |
} |
| 228 | 228 |
image := latest.DockerImageReference |
| ... | ... |
@@ -2,7 +2,6 @@ package generator |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 6 | 5 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 7 | 6 |
|
| 8 | 7 |
deployapi "github.com/openshift/origin/pkg/deploy/api" |
| ... | ... |
@@ -15,7 +14,7 @@ type REST struct {
|
| 15 | 15 |
codec runtime.Codec |
| 16 | 16 |
} |
| 17 | 17 |
|
| 18 |
-func NewREST(generator *DeploymentConfigGenerator, codec runtime.Codec) apiserver.RESTStorage {
|
|
| 18 |
+func NewREST(generator *DeploymentConfigGenerator, codec runtime.Codec) *REST {
|
|
| 19 | 19 |
return &REST{generator: generator, codec: codec}
|
| 20 | 20 |
} |
| 21 | 21 |
|
| ... | ... |
@@ -6,7 +6,6 @@ import ( |
| 6 | 6 |
"code.google.com/p/go-uuid/uuid" |
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 | 8 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 9 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 12 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -23,7 +22,7 @@ type REST struct {
|
| 23 | 23 |
} |
| 24 | 24 |
|
| 25 | 25 |
// NewREST creates a new REST backed by the given registry. |
| 26 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 26 |
+func NewREST(registry Registry) *REST {
|
|
| 27 | 27 |
return &REST{
|
| 28 | 28 |
registry: registry, |
| 29 | 29 |
} |
| ... | ... |
@@ -7,7 +7,6 @@ import ( |
| 7 | 7 |
|
| 8 | 8 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 9 | 9 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 10 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 12 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 13 | 12 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -23,7 +22,7 @@ type REST struct {
|
| 23 | 23 |
} |
| 24 | 24 |
|
| 25 | 25 |
// NewREST creates a new REST backed by the given registry. |
| 26 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 26 |
+func NewREST(registry Registry) *REST {
|
|
| 27 | 27 |
return &REST{
|
| 28 | 28 |
registry: registry, |
| 29 | 29 |
} |
| ... | ... |
@@ -5,8 +5,8 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 9 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 10 | 10 |
|
| 11 | 11 |
deployapi "github.com/openshift/origin/pkg/deploy/api" |
| 12 | 12 |
"github.com/openshift/origin/pkg/deploy/api/validation" |
| ... | ... |
@@ -44,7 +44,7 @@ func (c Client) GenerateRollback(from, to *deployapi.DeploymentConfig, spec *dep |
| 44 | 44 |
} |
| 45 | 45 |
|
| 46 | 46 |
// NewREST safely creates a new REST. |
| 47 |
-func NewREST(generator GeneratorClient, codec runtime.Codec) apiserver.RESTStorage {
|
|
| 47 |
+func NewREST(generator GeneratorClient, codec runtime.Codec) *REST {
|
|
| 48 | 48 |
return &REST{
|
| 49 | 49 |
generator: generator, |
| 50 | 50 |
codec: codec, |
| ... | ... |
@@ -98,6 +98,6 @@ func (s *REST) Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, err |
| 98 | 98 |
} |
| 99 | 99 |
|
| 100 | 100 |
func newInvalidDeploymentError(rollback *deployapi.DeploymentConfigRollback, reason string) error {
|
| 101 |
- err := kerrors.NewFieldInvalid("spec.from.name", rollback.Spec.From.Name, reason)
|
|
| 102 |
- return kerrors.NewInvalid("DeploymentConfigRollback", "", kerrors.ValidationErrorList{err})
|
|
| 101 |
+ err := fielderrors.NewFieldInvalid("spec.from.name", rollback.Spec.From.Name, reason)
|
|
| 102 |
+ return kerrors.NewInvalid("DeploymentConfigRollback", "", fielderrors.ValidationErrorList{err})
|
|
| 103 | 103 |
} |
| ... | ... |
@@ -192,10 +192,10 @@ func AddServices(objects Objects) Objects {
|
| 192 | 192 |
Labels: t.Labels, |
| 193 | 193 |
}, |
| 194 | 194 |
Spec: kapi.ServiceSpec{
|
| 195 |
- ContainerPort: kutil.NewIntOrStringFromInt(p.ContainerPort), |
|
| 196 |
- Port: p.ContainerPort, |
|
| 197 |
- Selector: t.Template.ControllerTemplate.Selector, |
|
| 198 |
- Protocol: p.Protocol, |
|
| 195 |
+ TargetPort: kutil.NewIntOrStringFromInt(p.ContainerPort), |
|
| 196 |
+ Port: p.ContainerPort, |
|
| 197 |
+ Selector: t.Template.ControllerTemplate.Selector, |
|
| 198 |
+ Protocol: p.Protocol, |
|
| 199 | 199 |
}, |
| 200 | 200 |
}) |
| 201 | 201 |
break |
| ... | ... |
@@ -1,25 +1,25 @@ |
| 1 | 1 |
package validation |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 5 | 4 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 6 | 5 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 6 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 7 | 7 |
|
| 8 | 8 |
"github.com/openshift/origin/pkg/image/api" |
| 9 | 9 |
) |
| 10 | 10 |
|
| 11 | 11 |
// ValidateImage tests required fields for an Image. |
| 12 |
-func ValidateImage(image *api.Image) errors.ValidationErrorList {
|
|
| 13 |
- result := errors.ValidationErrorList{}
|
|
| 12 |
+func ValidateImage(image *api.Image) fielderrors.ValidationErrorList {
|
|
| 13 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 14 | 14 |
|
| 15 | 15 |
if len(image.Name) == 0 {
|
| 16 |
- result = append(result, errors.NewFieldRequired("name"))
|
|
| 16 |
+ result = append(result, fielderrors.NewFieldRequired("name"))
|
|
| 17 | 17 |
} |
| 18 | 18 |
if len(image.DockerImageReference) == 0 {
|
| 19 |
- result = append(result, errors.NewFieldRequired("dockerImageReference"))
|
|
| 19 |
+ result = append(result, fielderrors.NewFieldRequired("dockerImageReference"))
|
|
| 20 | 20 |
} else {
|
| 21 | 21 |
if _, err := api.ParseDockerImageReference(image.DockerImageReference); err != nil {
|
| 22 |
- result = append(result, errors.NewFieldInvalid("dockerImageReference", image.DockerImageReference, err.Error()))
|
|
| 22 |
+ result = append(result, fielderrors.NewFieldInvalid("dockerImageReference", image.DockerImageReference, err.Error()))
|
|
| 23 | 23 |
} |
| 24 | 24 |
} |
| 25 | 25 |
|
| ... | ... |
@@ -27,29 +27,29 @@ func ValidateImage(image *api.Image) errors.ValidationErrorList {
|
| 27 | 27 |
} |
| 28 | 28 |
|
| 29 | 29 |
// ValidateImageRepository tests required fields for an ImageRepository. |
| 30 |
-func ValidateImageRepository(repo *api.ImageRepository) errors.ValidationErrorList {
|
|
| 31 |
- result := errors.ValidationErrorList{}
|
|
| 30 |
+func ValidateImageRepository(repo *api.ImageRepository) fielderrors.ValidationErrorList {
|
|
| 31 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 32 | 32 |
|
| 33 | 33 |
if repo.Tags == nil {
|
| 34 | 34 |
repo.Tags = make(map[string]string) |
| 35 | 35 |
} |
| 36 | 36 |
if len(repo.Name) == 0 {
|
| 37 |
- result = append(result, errors.NewFieldRequired("name"))
|
|
| 37 |
+ result = append(result, fielderrors.NewFieldRequired("name"))
|
|
| 38 | 38 |
} |
| 39 | 39 |
if !util.IsDNS1123Subdomain(repo.Namespace) {
|
| 40 |
- result = append(result, errors.NewFieldInvalid("namespace", repo.Namespace, ""))
|
|
| 40 |
+ result = append(result, fielderrors.NewFieldInvalid("namespace", repo.Namespace, ""))
|
|
| 41 | 41 |
} |
| 42 | 42 |
if len(repo.DockerImageRepository) != 0 {
|
| 43 | 43 |
if _, err := api.ParseDockerImageReference(repo.DockerImageRepository); err != nil {
|
| 44 |
- result = append(result, errors.NewFieldInvalid("dockerImageRepository", repo.DockerImageRepository, err.Error()))
|
|
| 44 |
+ result = append(result, fielderrors.NewFieldInvalid("dockerImageRepository", repo.DockerImageRepository, err.Error()))
|
|
| 45 | 45 |
} |
| 46 | 46 |
} |
| 47 | 47 |
|
| 48 | 48 |
return result |
| 49 | 49 |
} |
| 50 | 50 |
|
| 51 |
-func ValidateImageRepositoryUpdate(newRepo, oldRepo *api.ImageRepository) errors.ValidationErrorList {
|
|
| 52 |
- result := errors.ValidationErrorList{}
|
|
| 51 |
+func ValidateImageRepositoryUpdate(newRepo, oldRepo *api.ImageRepository) fielderrors.ValidationErrorList {
|
|
| 52 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 53 | 53 |
|
| 54 | 54 |
result = append(result, validation.ValidateObjectMetaUpdate(&oldRepo.ObjectMeta, &newRepo.ObjectMeta).Prefix("metadata")...)
|
| 55 | 55 |
result = append(result, ValidateImageRepository(newRepo)...) |
| ... | ... |
@@ -57,8 +57,8 @@ func ValidateImageRepositoryUpdate(newRepo, oldRepo *api.ImageRepository) errors |
| 57 | 57 |
return result |
| 58 | 58 |
} |
| 59 | 59 |
|
| 60 |
-func ValidateImageRepositoryStatusUpdate(newRepo, oldRepo *api.ImageRepository) errors.ValidationErrorList {
|
|
| 61 |
- result := errors.ValidationErrorList{}
|
|
| 60 |
+func ValidateImageRepositoryStatusUpdate(newRepo, oldRepo *api.ImageRepository) fielderrors.ValidationErrorList {
|
|
| 61 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 62 | 62 |
result = append(result, validation.ValidateObjectMetaUpdate(&oldRepo.ObjectMeta, &newRepo.ObjectMeta).Prefix("metadata")...)
|
| 63 | 63 |
newRepo.Tags = oldRepo.Tags |
| 64 | 64 |
newRepo.DockerImageRepository = oldRepo.DockerImageRepository |
| ... | ... |
@@ -66,27 +66,27 @@ func ValidateImageRepositoryStatusUpdate(newRepo, oldRepo *api.ImageRepository) |
| 66 | 66 |
} |
| 67 | 67 |
|
| 68 | 68 |
// ValidateImageRepositoryMapping tests required fields for an ImageRepositoryMapping. |
| 69 |
-func ValidateImageRepositoryMapping(mapping *api.ImageRepositoryMapping) errors.ValidationErrorList {
|
|
| 70 |
- result := errors.ValidationErrorList{}
|
|
| 69 |
+func ValidateImageRepositoryMapping(mapping *api.ImageRepositoryMapping) fielderrors.ValidationErrorList {
|
|
| 70 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 71 | 71 |
|
| 72 | 72 |
hasRepository := len(mapping.DockerImageRepository) != 0 |
| 73 | 73 |
hasName := len(mapping.Name) != 0 |
| 74 | 74 |
switch {
|
| 75 | 75 |
case hasRepository: |
| 76 | 76 |
if _, err := api.ParseDockerImageReference(mapping.DockerImageRepository); err != nil {
|
| 77 |
- result = append(result, errors.NewFieldInvalid("dockerImageRepository", mapping.DockerImageRepository, err.Error()))
|
|
| 77 |
+ result = append(result, fielderrors.NewFieldInvalid("dockerImageRepository", mapping.DockerImageRepository, err.Error()))
|
|
| 78 | 78 |
} |
| 79 | 79 |
case hasName: |
| 80 | 80 |
default: |
| 81 |
- result = append(result, errors.NewFieldRequired("name"))
|
|
| 82 |
- result = append(result, errors.NewFieldRequired("dockerImageRepository"))
|
|
| 81 |
+ result = append(result, fielderrors.NewFieldRequired("name"))
|
|
| 82 |
+ result = append(result, fielderrors.NewFieldRequired("dockerImageRepository"))
|
|
| 83 | 83 |
} |
| 84 | 84 |
|
| 85 | 85 |
if !util.IsDNS1123Subdomain(mapping.Namespace) {
|
| 86 |
- result = append(result, errors.NewFieldInvalid("namespace", mapping.Namespace, ""))
|
|
| 86 |
+ result = append(result, fielderrors.NewFieldInvalid("namespace", mapping.Namespace, ""))
|
|
| 87 | 87 |
} |
| 88 | 88 |
if len(mapping.Tag) == 0 {
|
| 89 |
- result = append(result, errors.NewFieldRequired("tag"))
|
|
| 89 |
+ result = append(result, fielderrors.NewFieldRequired("tag"))
|
|
| 90 | 90 |
} |
| 91 | 91 |
if errs := ValidateImage(&mapping.Image).Prefix("image"); len(errs) != 0 {
|
| 92 | 92 |
result = append(result, errs...) |
| ... | ... |
@@ -4,7 +4,7 @@ import ( |
| 4 | 4 |
"testing" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 8 | 8 |
"github.com/openshift/origin/pkg/image/api" |
| 9 | 9 |
) |
| 10 | 10 |
|
| ... | ... |
@@ -21,17 +21,17 @@ func TestValidateImageOK(t *testing.T) {
|
| 21 | 21 |
func TestValidateImageMissingFields(t *testing.T) {
|
| 22 | 22 |
errorCases := map[string]struct {
|
| 23 | 23 |
I api.Image |
| 24 |
- T errors.ValidationErrorType |
|
| 24 |
+ T fielderrors.ValidationErrorType |
|
| 25 | 25 |
F string |
| 26 | 26 |
}{
|
| 27 | 27 |
"missing Name": {
|
| 28 | 28 |
api.Image{DockerImageReference: "ref"},
|
| 29 |
- errors.ValidationErrorTypeRequired, |
|
| 29 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 30 | 30 |
"name", |
| 31 | 31 |
}, |
| 32 | 32 |
"missing DockerImageReference": {
|
| 33 | 33 |
api.Image{ObjectMeta: kapi.ObjectMeta{Name: "foo"}},
|
| 34 |
- errors.ValidationErrorTypeRequired, |
|
| 34 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 35 | 35 |
"dockerImageReference", |
| 36 | 36 |
}, |
| 37 | 37 |
} |
| ... | ... |
@@ -44,7 +44,7 @@ func TestValidateImageMissingFields(t *testing.T) {
|
| 44 | 44 |
} |
| 45 | 45 |
match := false |
| 46 | 46 |
for i := range errs {
|
| 47 |
- if errs[i].(*errors.ValidationError).Type == v.T && errs[i].(*errors.ValidationError).Field == v.F {
|
|
| 47 |
+ if errs[i].(*fielderrors.ValidationError).Type == v.T && errs[i].(*fielderrors.ValidationError).Field == v.F {
|
|
| 48 | 48 |
match = true |
| 49 | 49 |
break |
| 50 | 50 |
} |
| ... | ... |
@@ -58,7 +58,7 @@ func TestValidateImageMissingFields(t *testing.T) {
|
| 58 | 58 |
func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 59 | 59 |
errorCases := map[string]struct {
|
| 60 | 60 |
I api.ImageRepositoryMapping |
| 61 |
- T errors.ValidationErrorType |
|
| 61 |
+ T fielderrors.ValidationErrorType |
|
| 62 | 62 |
F string |
| 63 | 63 |
}{
|
| 64 | 64 |
"missing DockerImageRepository": {
|
| ... | ... |
@@ -75,7 +75,7 @@ func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 75 | 75 |
DockerImageReference: "openshift/ruby-19-centos", |
| 76 | 76 |
}, |
| 77 | 77 |
}, |
| 78 |
- errors.ValidationErrorTypeRequired, |
|
| 78 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 79 | 79 |
"dockerImageRepository", |
| 80 | 80 |
}, |
| 81 | 81 |
"missing Name": {
|
| ... | ... |
@@ -92,7 +92,7 @@ func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 92 | 92 |
DockerImageReference: "openshift/ruby-19-centos", |
| 93 | 93 |
}, |
| 94 | 94 |
}, |
| 95 |
- errors.ValidationErrorTypeRequired, |
|
| 95 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 96 | 96 |
"name", |
| 97 | 97 |
}, |
| 98 | 98 |
"missing Tag": {
|
| ... | ... |
@@ -109,7 +109,7 @@ func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 109 | 109 |
DockerImageReference: "openshift/ruby-19-centos", |
| 110 | 110 |
}, |
| 111 | 111 |
}, |
| 112 |
- errors.ValidationErrorTypeRequired, |
|
| 112 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 113 | 113 |
"tag", |
| 114 | 114 |
}, |
| 115 | 115 |
"missing image name": {
|
| ... | ... |
@@ -126,7 +126,7 @@ func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 126 | 126 |
DockerImageReference: "openshift/ruby-19-centos", |
| 127 | 127 |
}, |
| 128 | 128 |
}, |
| 129 |
- errors.ValidationErrorTypeRequired, |
|
| 129 |
+ fielderrors.ValidationErrorTypeRequired, |
|
| 130 | 130 |
"image.name", |
| 131 | 131 |
}, |
| 132 | 132 |
"invalid repository pull spec": {
|
| ... | ... |
@@ -144,7 +144,7 @@ func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 144 | 144 |
DockerImageReference: "openshift/ruby-19-centos", |
| 145 | 145 |
}, |
| 146 | 146 |
}, |
| 147 |
- errors.ValidationErrorTypeInvalid, |
|
| 147 |
+ fielderrors.ValidationErrorTypeInvalid, |
|
| 148 | 148 |
"dockerImageRepository", |
| 149 | 149 |
}, |
| 150 | 150 |
} |
| ... | ... |
@@ -157,7 +157,7 @@ func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
|
| 157 | 157 |
} |
| 158 | 158 |
match := false |
| 159 | 159 |
for i := range errs {
|
| 160 |
- if errs[i].(*errors.ValidationError).Type == v.T && errs[i].(*errors.ValidationError).Field == v.F {
|
|
| 160 |
+ if errs[i].(*fielderrors.ValidationError).Type == v.T && errs[i].(*fielderrors.ValidationError).Field == v.F {
|
|
| 161 | 161 |
match = true |
| 162 | 162 |
break |
| 163 | 163 |
} |
| ... | ... |
@@ -2,7 +2,7 @@ package image |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 5 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 6 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 7 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -26,10 +26,10 @@ type Registry interface {
|
| 26 | 26 |
|
| 27 | 27 |
// Storage is an interface for a standard REST Storage backend |
| 28 | 28 |
type Storage interface {
|
| 29 |
- apiserver.RESTGracefulDeleter |
|
| 30 |
- apiserver.RESTLister |
|
| 31 |
- apiserver.RESTGetter |
|
| 32 |
- apiserver.ResourceWatcher |
|
| 29 |
+ rest.GracefulDeleter |
|
| 30 |
+ rest.Lister |
|
| 31 |
+ rest.Getter |
|
| 32 |
+ rest.Watcher |
|
| 33 | 33 |
|
| 34 | 34 |
Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, error) |
| 35 | 35 |
} |
| ... | ... |
@@ -4,11 +4,11 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 12 |
|
| 13 | 13 |
"github.com/openshift/origin/pkg/image/api" |
| 14 | 14 |
"github.com/openshift/origin/pkg/image/api/validation" |
| ... | ... |
@@ -24,6 +24,9 @@ type imageStrategy struct {
|
| 24 | 24 |
// Image objects via the REST API. |
| 25 | 25 |
var Strategy = imageStrategy{kapi.Scheme, kapi.SimpleNameGenerator}
|
| 26 | 26 |
|
| 27 |
+func (imageStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 28 |
+func (imageStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 29 |
+ |
|
| 27 | 30 |
// NamespaceScoped is false for images. |
| 28 | 31 |
func (imageStrategy) NamespaceScoped() bool {
|
| 29 | 32 |
return false |
| ... | ... |
@@ -34,7 +37,7 @@ func (imageStrategy) ResetBeforeCreate(obj runtime.Object) {
|
| 34 | 34 |
} |
| 35 | 35 |
|
| 36 | 36 |
// Validate validates a new image. |
| 37 |
-func (imageStrategy) Validate(obj runtime.Object) errors.ValidationErrorList {
|
|
| 37 |
+func (imageStrategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 38 | 38 |
image := obj.(*api.Image) |
| 39 | 39 |
return validation.ValidateImage(image) |
| 40 | 40 |
} |
| ... | ... |
@@ -2,7 +2,7 @@ package imagerepository |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 5 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 6 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 7 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -31,10 +31,10 @@ type Registry interface {
|
| 31 | 31 |
|
| 32 | 32 |
// Storage is an interface for a standard REST Storage backend |
| 33 | 33 |
type Storage interface {
|
| 34 |
- apiserver.RESTGracefulDeleter |
|
| 35 |
- apiserver.RESTLister |
|
| 36 |
- apiserver.RESTGetter |
|
| 37 |
- apiserver.ResourceWatcher |
|
| 34 |
+ rest.GracefulDeleter |
|
| 35 |
+ rest.Lister |
|
| 36 |
+ rest.Getter |
|
| 37 |
+ rest.Watcher |
|
| 38 | 38 |
|
| 39 | 39 |
Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, error) |
| 40 | 40 |
Update(ctx kapi.Context, obj runtime.Object) (runtime.Object, bool, error) |
| ... | ... |
@@ -43,12 +43,12 @@ type Storage interface {
|
| 43 | 43 |
// storage puts strong typing around storage calls |
| 44 | 44 |
type storage struct {
|
| 45 | 45 |
Storage |
| 46 |
- status apiserver.RESTUpdater |
|
| 46 |
+ status rest.Updater |
|
| 47 | 47 |
} |
| 48 | 48 |
|
| 49 | 49 |
// NewRegistry returns a new Registry interface for the given Storage. Any mismatched |
| 50 | 50 |
// types will panic. |
| 51 |
-func NewRegistry(s Storage, status apiserver.RESTUpdater) Registry {
|
|
| 51 |
+func NewRegistry(s Storage, status rest.Updater) Registry {
|
|
| 52 | 52 |
return &storage{s, status}
|
| 53 | 53 |
} |
| 54 | 54 |
|
| ... | ... |
@@ -4,11 +4,11 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 12 |
|
| 13 | 13 |
"github.com/openshift/origin/pkg/image/api" |
| 14 | 14 |
"github.com/openshift/origin/pkg/image/api/validation" |
| ... | ... |
@@ -27,6 +27,9 @@ func NewStrategy(defaultRegistry DefaultRegistry) Strategy {
|
| 27 | 27 |
return Strategy{kapi.Scheme, kapi.SimpleNameGenerator, defaultRegistry}
|
| 28 | 28 |
} |
| 29 | 29 |
|
| 30 |
+func (Strategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 31 |
+func (Strategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 32 |
+ |
|
| 30 | 33 |
// NamespaceScoped is true for image repositories. |
| 31 | 34 |
func (s Strategy) NamespaceScoped() bool {
|
| 32 | 35 |
return true |
| ... | ... |
@@ -43,7 +46,7 @@ func (s Strategy) ResetBeforeCreate(obj runtime.Object) {
|
| 43 | 43 |
} |
| 44 | 44 |
|
| 45 | 45 |
// Validate validates a new image repository. |
| 46 |
-func (s Strategy) Validate(obj runtime.Object) errors.ValidationErrorList {
|
|
| 46 |
+func (s Strategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 47 | 47 |
ir := obj.(*api.ImageRepository) |
| 48 | 48 |
return validation.ValidateImageRepository(ir) |
| 49 | 49 |
} |
| ... | ... |
@@ -117,7 +120,7 @@ func tagsChanged(old, repo *api.ImageRepository) {
|
| 117 | 117 |
} |
| 118 | 118 |
|
| 119 | 119 |
// ValidateUpdate is the default update validation for an end user. |
| 120 |
-func (s Strategy) ValidateUpdate(obj, old runtime.Object) errors.ValidationErrorList {
|
|
| 120 |
+func (s Strategy) ValidateUpdate(obj, old runtime.Object) fielderrors.ValidationErrorList {
|
|
| 121 | 121 |
repo := obj.(*api.ImageRepository) |
| 122 | 122 |
oldRepo := old.(*api.ImageRepository) |
| 123 | 123 |
|
| ... | ... |
@@ -146,7 +149,10 @@ func NewStatusStrategy(strategy Strategy) StatusStrategy {
|
| 146 | 146 |
return StatusStrategy{strategy}
|
| 147 | 147 |
} |
| 148 | 148 |
|
| 149 |
-func (StatusStrategy) ValidateUpdate(obj, old runtime.Object) errors.ValidationErrorList {
|
|
| 149 |
+func (StatusStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 150 |
+func (StatusStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 151 |
+ |
|
| 152 |
+func (StatusStrategy) ValidateUpdate(obj, old runtime.Object) fielderrors.ValidationErrorList {
|
|
| 150 | 153 |
// TODO: merge valid fields after update |
| 151 | 154 |
return validation.ValidateImageRepositoryStatusUpdate(obj.(*api.ImageRepository), old.(*api.ImageRepository)) |
| 152 | 155 |
} |
| ... | ... |
@@ -9,6 +9,7 @@ import ( |
| 9 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 10 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 12 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 13 |
|
| 13 | 14 |
"github.com/openshift/origin/pkg/image/api" |
| 14 | 15 |
"github.com/openshift/origin/pkg/image/api/validation" |
| ... | ... |
@@ -47,6 +48,9 @@ func (r *REST) New() runtime.Object {
|
| 47 | 47 |
return &api.ImageRepositoryMapping{}
|
| 48 | 48 |
} |
| 49 | 49 |
|
| 50 |
+func (imageRepositoryMappingStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 51 |
+func (imageRepositoryMappingStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 52 |
+ |
|
| 50 | 53 |
// NamespaceScoped is true for image repository mappings. |
| 51 | 54 |
func (s imageRepositoryMappingStrategy) NamespaceScoped() bool {
|
| 52 | 55 |
return true |
| ... | ... |
@@ -57,7 +61,7 @@ func (s imageRepositoryMappingStrategy) ResetBeforeCreate(obj runtime.Object) {
|
| 57 | 57 |
} |
| 58 | 58 |
|
| 59 | 59 |
// Validate validates a new ImageRepositoryMapping. |
| 60 |
-func (s imageRepositoryMappingStrategy) Validate(obj runtime.Object) errors.ValidationErrorList {
|
|
| 60 |
+func (s imageRepositoryMappingStrategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 61 | 61 |
mapping := obj.(*api.ImageRepositoryMapping) |
| 62 | 62 |
return validation.ValidateImageRepositoryMapping(mapping) |
| 63 | 63 |
} |
| ... | ... |
@@ -130,8 +134,8 @@ func (s *REST) findRepositoryForMapping(ctx kapi.Context, mapping *api.ImageRepo |
| 130 | 130 |
return &list.Items[i], nil |
| 131 | 131 |
} |
| 132 | 132 |
} |
| 133 |
- return nil, errors.NewInvalid("imageRepositoryMapping", "", errors.ValidationErrorList{
|
|
| 134 |
- errors.NewFieldNotFound("dockerImageRepository", mapping.DockerImageRepository),
|
|
| 133 |
+ return nil, errors.NewInvalid("imageRepositoryMapping", "", fielderrors.ValidationErrorList{
|
|
| 134 |
+ fielderrors.NewFieldNotFound("dockerImageRepository", mapping.DockerImageRepository),
|
|
| 135 | 135 |
}) |
| 136 | 136 |
} |
| 137 | 137 |
return nil, errors.NewNotFound("ImageRepository", "")
|
| ... | ... |
@@ -8,18 +8,18 @@ import ( |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/network" |
| 9 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/network/exec" |
| 10 | 10 |
// Volume plugins |
| 11 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume" |
|
| 12 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume/empty_dir" |
|
| 13 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume/gce_pd" |
|
| 14 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume/git_repo" |
|
| 15 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume/host_path" |
|
| 16 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume/nfs" |
|
| 17 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/volume/secret" |
|
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume" |
|
| 12 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume/empty_dir" |
|
| 13 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume/gce_pd" |
|
| 14 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume/git_repo" |
|
| 15 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume/host_path" |
|
| 16 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume/nfs" |
|
| 17 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/volume/secret" |
|
| 18 | 18 |
) |
| 19 | 19 |
|
| 20 | 20 |
// ProbeVolumePlugins collects all volume plugins into an easy to use list. |
| 21 |
-func ProbeVolumePlugins() []volume.Plugin {
|
|
| 22 |
- allPlugins := []volume.Plugin{}
|
|
| 21 |
+func ProbeVolumePlugins() []volume.VolumePlugin {
|
|
| 22 |
+ allPlugins := []volume.VolumePlugin{}
|
|
| 23 | 23 |
|
| 24 | 24 |
// The list of plugins to probe is decided by the kubelet binary, not |
| 25 | 25 |
// by dynamic linking or other "magic". Plugins will be analyzed and |
| ... | ... |
@@ -1,109 +1,109 @@ |
| 1 | 1 |
package validation |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 5 | 4 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 5 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 6 | 6 |
"github.com/openshift/origin/pkg/oauth/api" |
| 7 | 7 |
) |
| 8 | 8 |
|
| 9 |
-func ValidateAccessToken(accessToken *api.OAuthAccessToken) errs.ValidationErrorList {
|
|
| 10 |
- allErrs := errs.ValidationErrorList{}
|
|
| 9 |
+func ValidateAccessToken(accessToken *api.OAuthAccessToken) fielderrors.ValidationErrorList {
|
|
| 10 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 11 | 11 |
if len(accessToken.Name) == 0 {
|
| 12 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 12 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 13 | 13 |
} |
| 14 | 14 |
if len(accessToken.ClientName) == 0 {
|
| 15 |
- allErrs = append(allErrs, errs.NewFieldRequired("clientname"))
|
|
| 15 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("clientname"))
|
|
| 16 | 16 |
} |
| 17 | 17 |
if len(accessToken.UserName) == 0 {
|
| 18 |
- allErrs = append(allErrs, errs.NewFieldRequired("username"))
|
|
| 18 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("username"))
|
|
| 19 | 19 |
} |
| 20 | 20 |
if len(accessToken.UserUID) == 0 {
|
| 21 |
- allErrs = append(allErrs, errs.NewFieldRequired("useruid"))
|
|
| 21 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("useruid"))
|
|
| 22 | 22 |
} |
| 23 | 23 |
if len(accessToken.Namespace) != 0 {
|
| 24 |
- allErrs = append(allErrs, errs.NewFieldInvalid("namespace", accessToken.Namespace, "namespace must be empty"))
|
|
| 24 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("namespace", accessToken.Namespace, "namespace must be empty"))
|
|
| 25 | 25 |
} |
| 26 | 26 |
allErrs = append(allErrs, validateLabels(accessToken.Labels)...) |
| 27 | 27 |
return allErrs |
| 28 | 28 |
} |
| 29 | 29 |
|
| 30 |
-func ValidateAuthorizeToken(authorizeToken *api.OAuthAuthorizeToken) errs.ValidationErrorList {
|
|
| 31 |
- allErrs := errs.ValidationErrorList{}
|
|
| 30 |
+func ValidateAuthorizeToken(authorizeToken *api.OAuthAuthorizeToken) fielderrors.ValidationErrorList {
|
|
| 31 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 32 | 32 |
if len(authorizeToken.Name) == 0 {
|
| 33 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 33 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 34 | 34 |
} |
| 35 | 35 |
if len(authorizeToken.ClientName) == 0 {
|
| 36 |
- allErrs = append(allErrs, errs.NewFieldRequired("clientname"))
|
|
| 36 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("clientname"))
|
|
| 37 | 37 |
} |
| 38 | 38 |
if len(authorizeToken.UserName) == 0 {
|
| 39 |
- allErrs = append(allErrs, errs.NewFieldRequired("username"))
|
|
| 39 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("username"))
|
|
| 40 | 40 |
} |
| 41 | 41 |
if len(authorizeToken.UserUID) == 0 {
|
| 42 |
- allErrs = append(allErrs, errs.NewFieldRequired("useruid"))
|
|
| 42 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("useruid"))
|
|
| 43 | 43 |
} |
| 44 | 44 |
if len(authorizeToken.Namespace) != 0 {
|
| 45 |
- allErrs = append(allErrs, errs.NewFieldInvalid("namespace", authorizeToken.Namespace, "namespace must be empty"))
|
|
| 45 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("namespace", authorizeToken.Namespace, "namespace must be empty"))
|
|
| 46 | 46 |
} |
| 47 | 47 |
allErrs = append(allErrs, validateLabels(authorizeToken.Labels)...) |
| 48 | 48 |
return allErrs |
| 49 | 49 |
} |
| 50 | 50 |
|
| 51 |
-func ValidateClient(client *api.OAuthClient) errs.ValidationErrorList {
|
|
| 52 |
- allErrs := errs.ValidationErrorList{}
|
|
| 51 |
+func ValidateClient(client *api.OAuthClient) fielderrors.ValidationErrorList {
|
|
| 52 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 53 | 53 |
if len(client.Name) == 0 {
|
| 54 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 54 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 55 | 55 |
} |
| 56 | 56 |
if len(client.Namespace) != 0 {
|
| 57 |
- allErrs = append(allErrs, errs.NewFieldInvalid("namespace", client.Namespace, "namespace must be empty"))
|
|
| 57 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("namespace", client.Namespace, "namespace must be empty"))
|
|
| 58 | 58 |
} |
| 59 | 59 |
allErrs = append(allErrs, validateLabels(client.Labels)...) |
| 60 | 60 |
return allErrs |
| 61 | 61 |
} |
| 62 | 62 |
|
| 63 |
-func ValidateClientAuthorization(clientAuthorization *api.OAuthClientAuthorization) errs.ValidationErrorList {
|
|
| 64 |
- allErrs := errs.ValidationErrorList{}
|
|
| 63 |
+func ValidateClientAuthorization(clientAuthorization *api.OAuthClientAuthorization) fielderrors.ValidationErrorList {
|
|
| 64 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 65 | 65 |
if len(clientAuthorization.Name) == 0 {
|
| 66 |
- allErrs = append(allErrs, errs.NewFieldRequired("name"))
|
|
| 66 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("name"))
|
|
| 67 | 67 |
} |
| 68 | 68 |
if len(clientAuthorization.ClientName) == 0 {
|
| 69 |
- allErrs = append(allErrs, errs.NewFieldRequired("clientname"))
|
|
| 69 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("clientname"))
|
|
| 70 | 70 |
} |
| 71 | 71 |
if len(clientAuthorization.UserName) == 0 {
|
| 72 |
- allErrs = append(allErrs, errs.NewFieldRequired("username"))
|
|
| 72 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("username"))
|
|
| 73 | 73 |
} |
| 74 | 74 |
if len(clientAuthorization.UserUID) == 0 {
|
| 75 |
- allErrs = append(allErrs, errs.NewFieldRequired("useruid"))
|
|
| 75 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("useruid"))
|
|
| 76 | 76 |
} |
| 77 | 77 |
if len(clientAuthorization.Namespace) != 0 {
|
| 78 |
- allErrs = append(allErrs, errs.NewFieldInvalid("namespace", clientAuthorization.Namespace, "namespace must be empty"))
|
|
| 78 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("namespace", clientAuthorization.Namespace, "namespace must be empty"))
|
|
| 79 | 79 |
} |
| 80 | 80 |
allErrs = append(allErrs, validateLabels(clientAuthorization.Labels)...) |
| 81 | 81 |
return allErrs |
| 82 | 82 |
} |
| 83 | 83 |
|
| 84 |
-func ValidateClientAuthorizationUpdate(newAuth *api.OAuthClientAuthorization, oldAuth *api.OAuthClientAuthorization) errs.ValidationErrorList {
|
|
| 84 |
+func ValidateClientAuthorizationUpdate(newAuth *api.OAuthClientAuthorization, oldAuth *api.OAuthClientAuthorization) fielderrors.ValidationErrorList {
|
|
| 85 | 85 |
allErrs := ValidateClientAuthorization(newAuth) |
| 86 | 86 |
if oldAuth.Name != newAuth.Name {
|
| 87 |
- allErrs = append(allErrs, errs.NewFieldInvalid("name", newAuth.Name, "name is not a mutable field"))
|
|
| 87 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("name", newAuth.Name, "name is not a mutable field"))
|
|
| 88 | 88 |
} |
| 89 | 89 |
if oldAuth.ClientName != newAuth.ClientName {
|
| 90 |
- allErrs = append(allErrs, errs.NewFieldInvalid("clientname", newAuth.ClientName, "clientname is not a mutable field"))
|
|
| 90 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("clientname", newAuth.ClientName, "clientname is not a mutable field"))
|
|
| 91 | 91 |
} |
| 92 | 92 |
if oldAuth.UserName != newAuth.UserName {
|
| 93 |
- allErrs = append(allErrs, errs.NewFieldInvalid("username", newAuth.UserName, "username is not a mutable field"))
|
|
| 93 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("username", newAuth.UserName, "username is not a mutable field"))
|
|
| 94 | 94 |
} |
| 95 | 95 |
if oldAuth.UserUID != newAuth.UserUID {
|
| 96 |
- allErrs = append(allErrs, errs.NewFieldInvalid("useruid", newAuth.UserUID, "useruid is not a mutable field"))
|
|
| 96 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("useruid", newAuth.UserUID, "useruid is not a mutable field"))
|
|
| 97 | 97 |
} |
| 98 | 98 |
allErrs = append(allErrs, validateLabels(newAuth.Labels)...) |
| 99 | 99 |
return allErrs |
| 100 | 100 |
} |
| 101 | 101 |
|
| 102 |
-func validateLabels(labels map[string]string) errs.ValidationErrorList {
|
|
| 103 |
- allErrs := errs.ValidationErrorList{}
|
|
| 102 |
+func validateLabels(labels map[string]string) fielderrors.ValidationErrorList {
|
|
| 103 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 104 | 104 |
for k := range labels {
|
| 105 | 105 |
if !util.IsDNS952Label(k) {
|
| 106 |
- allErrs = append(allErrs, errs.NewFieldNotSupported("label", k))
|
|
| 106 |
+ allErrs = append(allErrs, fielderrors.NewFieldNotSupported("label", k))
|
|
| 107 | 107 |
} |
| 108 | 108 |
} |
| 109 | 109 |
return allErrs |
| ... | ... |
@@ -4,7 +4,7 @@ import ( |
| 4 | 4 |
"testing" |
| 5 | 5 |
|
| 6 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 8 | 8 |
oapi "github.com/openshift/origin/pkg/oauth/api" |
| 9 | 9 |
) |
| 10 | 10 |
|
| ... | ... |
@@ -21,7 +21,7 @@ func TestValidateClientAuthorization(t *testing.T) {
|
| 21 | 21 |
|
| 22 | 22 |
errorCases := map[string]struct {
|
| 23 | 23 |
A oapi.OAuthClientAuthorization |
| 24 |
- T errors.ValidationErrorType |
|
| 24 |
+ T fielderrors.ValidationErrorType |
|
| 25 | 25 |
F string |
| 26 | 26 |
}{
|
| 27 | 27 |
"zero-length name": {
|
| ... | ... |
@@ -30,7 +30,7 @@ func TestValidateClientAuthorization(t *testing.T) {
|
| 30 | 30 |
UserName: "myusername", |
| 31 | 31 |
UserUID: "myuseruid", |
| 32 | 32 |
}, |
| 33 |
- T: errors.ValidationErrorTypeRequired, |
|
| 33 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 34 | 34 |
F: "name", |
| 35 | 35 |
}, |
| 36 | 36 |
"disallowed namespace": {
|
| ... | ... |
@@ -40,7 +40,7 @@ func TestValidateClientAuthorization(t *testing.T) {
|
| 40 | 40 |
UserName: "myusername", |
| 41 | 41 |
UserUID: "myuseruid", |
| 42 | 42 |
}, |
| 43 |
- T: errors.ValidationErrorTypeInvalid, |
|
| 43 |
+ T: fielderrors.ValidationErrorTypeInvalid, |
|
| 44 | 44 |
F: "namespace", |
| 45 | 45 |
}, |
| 46 | 46 |
} |
| ... | ... |
@@ -51,10 +51,10 @@ func TestValidateClientAuthorization(t *testing.T) {
|
| 51 | 51 |
continue |
| 52 | 52 |
} |
| 53 | 53 |
for i := range errs {
|
| 54 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 54 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 55 | 55 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 56 | 56 |
} |
| 57 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 57 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 58 | 58 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 59 | 59 |
} |
| 60 | 60 |
} |
| ... | ... |
@@ -71,17 +71,17 @@ func TestValidateClient(t *testing.T) {
|
| 71 | 71 |
|
| 72 | 72 |
errorCases := map[string]struct {
|
| 73 | 73 |
Client oapi.OAuthClient |
| 74 |
- T errors.ValidationErrorType |
|
| 74 |
+ T fielderrors.ValidationErrorType |
|
| 75 | 75 |
F string |
| 76 | 76 |
}{
|
| 77 | 77 |
"zero-length name": {
|
| 78 | 78 |
Client: oapi.OAuthClient{},
|
| 79 |
- T: errors.ValidationErrorTypeRequired, |
|
| 79 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 80 | 80 |
F: "name", |
| 81 | 81 |
}, |
| 82 | 82 |
"disallowed namespace": {
|
| 83 | 83 |
Client: oapi.OAuthClient{ObjectMeta: api.ObjectMeta{Name: "name", Namespace: "foo"}},
|
| 84 |
- T: errors.ValidationErrorTypeInvalid, |
|
| 84 |
+ T: fielderrors.ValidationErrorTypeInvalid, |
|
| 85 | 85 |
F: "namespace", |
| 86 | 86 |
}, |
| 87 | 87 |
} |
| ... | ... |
@@ -92,10 +92,10 @@ func TestValidateClient(t *testing.T) {
|
| 92 | 92 |
continue |
| 93 | 93 |
} |
| 94 | 94 |
for i := range errs {
|
| 95 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 95 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 96 | 96 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 97 | 97 |
} |
| 98 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 98 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 99 | 99 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 100 | 100 |
} |
| 101 | 101 |
} |
| ... | ... |
@@ -115,7 +115,7 @@ func TestValidateAccessTokens(t *testing.T) {
|
| 115 | 115 |
|
| 116 | 116 |
errorCases := map[string]struct {
|
| 117 | 117 |
Token oapi.OAuthAccessToken |
| 118 |
- T errors.ValidationErrorType |
|
| 118 |
+ T fielderrors.ValidationErrorType |
|
| 119 | 119 |
F string |
| 120 | 120 |
}{
|
| 121 | 121 |
"zero-length name": {
|
| ... | ... |
@@ -124,7 +124,7 @@ func TestValidateAccessTokens(t *testing.T) {
|
| 124 | 124 |
UserName: "myusername", |
| 125 | 125 |
UserUID: "myuseruid", |
| 126 | 126 |
}, |
| 127 |
- T: errors.ValidationErrorTypeRequired, |
|
| 127 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 128 | 128 |
F: "name", |
| 129 | 129 |
}, |
| 130 | 130 |
"disallowed namespace": {
|
| ... | ... |
@@ -134,7 +134,7 @@ func TestValidateAccessTokens(t *testing.T) {
|
| 134 | 134 |
UserName: "myusername", |
| 135 | 135 |
UserUID: "myuseruid", |
| 136 | 136 |
}, |
| 137 |
- T: errors.ValidationErrorTypeInvalid, |
|
| 137 |
+ T: fielderrors.ValidationErrorTypeInvalid, |
|
| 138 | 138 |
F: "namespace", |
| 139 | 139 |
}, |
| 140 | 140 |
} |
| ... | ... |
@@ -145,10 +145,10 @@ func TestValidateAccessTokens(t *testing.T) {
|
| 145 | 145 |
continue |
| 146 | 146 |
} |
| 147 | 147 |
for i := range errs {
|
| 148 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 148 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 149 | 149 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 150 | 150 |
} |
| 151 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 151 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 152 | 152 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 153 | 153 |
} |
| 154 | 154 |
} |
| ... | ... |
@@ -168,7 +168,7 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 168 | 168 |
|
| 169 | 169 |
errorCases := map[string]struct {
|
| 170 | 170 |
Token oapi.OAuthAuthorizeToken |
| 171 |
- T errors.ValidationErrorType |
|
| 171 |
+ T fielderrors.ValidationErrorType |
|
| 172 | 172 |
F string |
| 173 | 173 |
}{
|
| 174 | 174 |
"zero-length name": {
|
| ... | ... |
@@ -177,7 +177,7 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 177 | 177 |
UserName: "myusername", |
| 178 | 178 |
UserUID: "myuseruid", |
| 179 | 179 |
}, |
| 180 |
- T: errors.ValidationErrorTypeRequired, |
|
| 180 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 181 | 181 |
F: "name", |
| 182 | 182 |
}, |
| 183 | 183 |
"zero-length client name": {
|
| ... | ... |
@@ -186,7 +186,7 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 186 | 186 |
UserName: "myusername", |
| 187 | 187 |
UserUID: "myuseruid", |
| 188 | 188 |
}, |
| 189 |
- T: errors.ValidationErrorTypeRequired, |
|
| 189 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 190 | 190 |
F: "clientname", |
| 191 | 191 |
}, |
| 192 | 192 |
"zero-length user name": {
|
| ... | ... |
@@ -195,7 +195,7 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 195 | 195 |
ClientName: "myclient", |
| 196 | 196 |
UserUID: "myuseruid", |
| 197 | 197 |
}, |
| 198 |
- T: errors.ValidationErrorTypeRequired, |
|
| 198 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 199 | 199 |
F: "username", |
| 200 | 200 |
}, |
| 201 | 201 |
"zero-length user uid": {
|
| ... | ... |
@@ -204,7 +204,7 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 204 | 204 |
ClientName: "myclient", |
| 205 | 205 |
UserName: "myusername", |
| 206 | 206 |
}, |
| 207 |
- T: errors.ValidationErrorTypeRequired, |
|
| 207 |
+ T: fielderrors.ValidationErrorTypeRequired, |
|
| 208 | 208 |
F: "useruid", |
| 209 | 209 |
}, |
| 210 | 210 |
"disallowed namespace": {
|
| ... | ... |
@@ -214,7 +214,7 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 214 | 214 |
UserName: "myusername", |
| 215 | 215 |
UserUID: "myuseruid", |
| 216 | 216 |
}, |
| 217 |
- T: errors.ValidationErrorTypeInvalid, |
|
| 217 |
+ T: fielderrors.ValidationErrorTypeInvalid, |
|
| 218 | 218 |
F: "namespace", |
| 219 | 219 |
}, |
| 220 | 220 |
} |
| ... | ... |
@@ -225,10 +225,10 @@ func TestValidateAuthorizeTokens(t *testing.T) {
|
| 225 | 225 |
continue |
| 226 | 226 |
} |
| 227 | 227 |
for i := range errs {
|
| 228 |
- if errs[i].(*errors.ValidationError).Type != v.T {
|
|
| 228 |
+ if errs[i].(*fielderrors.ValidationError).Type != v.T {
|
|
| 229 | 229 |
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
|
| 230 | 230 |
} |
| 231 |
- if errs[i].(*errors.ValidationError).Field != v.F {
|
|
| 231 |
+ if errs[i].(*fielderrors.ValidationError).Field != v.F {
|
|
| 232 | 232 |
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
|
| 233 | 233 |
} |
| 234 | 234 |
} |
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -20,7 +19,7 @@ type REST struct {
|
| 20 | 20 |
} |
| 21 | 21 |
|
| 22 | 22 |
// NewStorage returns a new REST. |
| 23 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 23 |
+func NewREST(registry Registry) *REST {
|
|
| 24 | 24 |
return &REST{registry}
|
| 25 | 25 |
} |
| 26 | 26 |
|
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -20,7 +19,7 @@ type REST struct {
|
| 20 | 20 |
} |
| 21 | 21 |
|
| 22 | 22 |
// NewStorage returns a new REST. |
| 23 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 23 |
+func NewREST(registry Registry) *REST {
|
|
| 24 | 24 |
return &REST{registry}
|
| 25 | 25 |
} |
| 26 | 26 |
|
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -20,7 +19,7 @@ type REST struct {
|
| 20 | 20 |
} |
| 21 | 21 |
|
| 22 | 22 |
// NewStorage returns a new REST. |
| 23 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 23 |
+func NewREST(registry Registry) *REST {
|
|
| 24 | 24 |
return &REST{registry}
|
| 25 | 25 |
} |
| 26 | 26 |
|
| ... | ... |
@@ -6,7 +6,6 @@ import ( |
| 6 | 6 |
|
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 | 8 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 9 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 12 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -21,7 +20,7 @@ type REST struct {
|
| 21 | 21 |
} |
| 22 | 22 |
|
| 23 | 23 |
// NewStorage returns a new REST. |
| 24 |
-func NewREST(registry Registry) apiserver.RESTStorage {
|
|
| 24 |
+func NewREST(registry Registry) *REST {
|
|
| 25 | 25 |
return &REST{registry}
|
| 26 | 26 |
} |
| 27 | 27 |
|
| ... | ... |
@@ -3,24 +3,24 @@ package validation |
| 3 | 3 |
import ( |
| 4 | 4 |
"strings" |
| 5 | 5 |
|
| 6 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 7 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 8 | 8 |
"github.com/openshift/origin/pkg/project/api" |
| 9 | 9 |
) |
| 10 | 10 |
|
| 11 | 11 |
// ValidateProject tests required fields for a Project. |
| 12 |
-func ValidateProject(project *api.Project) errors.ValidationErrorList {
|
|
| 13 |
- result := errors.ValidationErrorList{}
|
|
| 12 |
+func ValidateProject(project *api.Project) fielderrors.ValidationErrorList {
|
|
| 13 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 14 | 14 |
if len(project.Name) == 0 {
|
| 15 |
- result = append(result, errors.NewFieldRequired("name"))
|
|
| 15 |
+ result = append(result, fielderrors.NewFieldRequired("name"))
|
|
| 16 | 16 |
} else if !util.IsDNS1123Subdomain(project.Name) {
|
| 17 |
- result = append(result, errors.NewFieldInvalid("name", project.Name, "does not conform to lower-cased dns1123"))
|
|
| 17 |
+ result = append(result, fielderrors.NewFieldInvalid("name", project.Name, "does not conform to lower-cased dns1123"))
|
|
| 18 | 18 |
} |
| 19 | 19 |
if len(project.Namespace) > 0 {
|
| 20 |
- result = append(result, errors.NewFieldInvalid("namespace", project.Namespace, "must be the empty-string"))
|
|
| 20 |
+ result = append(result, fielderrors.NewFieldInvalid("namespace", project.Namespace, "must be the empty-string"))
|
|
| 21 | 21 |
} |
| 22 | 22 |
if !validateNoNewLineOrTab(project.DisplayName) {
|
| 23 |
- result = append(result, errors.NewFieldInvalid("displayName", project.DisplayName, "may not contain a new line or tab"))
|
|
| 23 |
+ result = append(result, fielderrors.NewFieldInvalid("displayName", project.DisplayName, "may not contain a new line or tab"))
|
|
| 24 | 24 |
} |
| 25 | 25 |
return result |
| 26 | 26 |
} |
| ... | ... |
@@ -116,7 +116,7 @@ func (ac *AuthorizationCache) Run(period time.Duration) {
|
| 116 | 116 |
namespaceReflector := cache.NewReflector( |
| 117 | 117 |
&cache.ListWatch{
|
| 118 | 118 |
ListFunc: func() (runtime.Object, error) {
|
| 119 |
- return ac.namespaceInterface.List(labels.Everything()) |
|
| 119 |
+ return ac.namespaceInterface.List(labels.Everything(), fields.Everything()) |
|
| 120 | 120 |
}, |
| 121 | 121 |
WatchFunc: func(resourceVersion string) (watch.Interface, error) {
|
| 122 | 122 |
return ac.namespaceInterface.Watch(labels.Everything(), fields.Everything(), resourceVersion) |
| ... | ... |
@@ -27,7 +27,7 @@ type NamespaceControllerFactory struct {
|
| 27 | 27 |
func (factory *NamespaceControllerFactory) Create() controller.RunnableController {
|
| 28 | 28 |
namespaceLW := &cache.ListWatch{
|
| 29 | 29 |
ListFunc: func() (runtime.Object, error) {
|
| 30 |
- return factory.KubeClient.Namespaces().List(labels.Everything()) |
|
| 30 |
+ return factory.KubeClient.Namespaces().List(labels.Everything(), fields.Everything()) |
|
| 31 | 31 |
}, |
| 32 | 32 |
WatchFunc: func(resourceVersion string) (watch.Interface, error) {
|
| 33 | 33 |
return factory.KubeClient.Namespaces().Watch(labels.Everything(), fields.Everything(), resourceVersion) |
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 | 7 |
kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 8 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| ... | ... |
@@ -22,7 +21,7 @@ type REST struct {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
// NewREST returns a RESTStorage object that will work against Project resources |
| 25 |
-func NewREST(client kclient.NamespaceInterface, lister projectauth.Lister) apiserver.RESTStorage {
|
|
| 25 |
+func NewREST(client kclient.NamespaceInterface, lister projectauth.Lister) *REST {
|
|
| 26 | 26 |
return &REST{client: client, lister: lister}
|
| 27 | 27 |
} |
| 28 | 28 |
|
| ... | ... |
@@ -3,16 +3,16 @@ package validation |
| 3 | 3 |
import ( |
| 4 | 4 |
"strings" |
| 5 | 5 |
|
| 6 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 7 | 6 |
kval "github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 8 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 9 | 9 |
|
| 10 | 10 |
routeapi "github.com/openshift/origin/pkg/route/api" |
| 11 | 11 |
) |
| 12 | 12 |
|
| 13 | 13 |
// ValidateRoute tests if required fields in the route are set. |
| 14 |
-func ValidateRoute(route *routeapi.Route) errs.ValidationErrorList {
|
|
| 15 |
- result := errs.ValidationErrorList{}
|
|
| 14 |
+func ValidateRoute(route *routeapi.Route) fielderrors.ValidationErrorList {
|
|
| 15 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 16 | 16 |
|
| 17 | 17 |
//ensure meta is set properly |
| 18 | 18 |
result = append(result, kval.ValidateObjectMeta(&route.ObjectMeta, true, kval.ValidatePodName)...) |
| ... | ... |
@@ -20,16 +20,16 @@ func ValidateRoute(route *routeapi.Route) errs.ValidationErrorList {
|
| 20 | 20 |
//host is not required but if it is set ensure it meets DNS requirements |
| 21 | 21 |
if len(route.Host) > 0 {
|
| 22 | 22 |
if !util.IsDNS1123Subdomain(route.Host) {
|
| 23 |
- result = append(result, errs.NewFieldInvalid("host", route.Host, "Host must conform to DNS 952 subdomain conventions"))
|
|
| 23 |
+ result = append(result, fielderrors.NewFieldInvalid("host", route.Host, "Host must conform to DNS 952 subdomain conventions"))
|
|
| 24 | 24 |
} |
| 25 | 25 |
} |
| 26 | 26 |
|
| 27 | 27 |
if len(route.Path) > 0 && !strings.HasPrefix(route.Path, "/") {
|
| 28 |
- result = append(result, errs.NewFieldInvalid("path", route.Path, "Path must begin with /"))
|
|
| 28 |
+ result = append(result, fielderrors.NewFieldInvalid("path", route.Path, "Path must begin with /"))
|
|
| 29 | 29 |
} |
| 30 | 30 |
|
| 31 | 31 |
if len(route.ServiceName) == 0 {
|
| 32 |
- result = append(result, errs.NewFieldRequired("serviceName"))
|
|
| 32 |
+ result = append(result, fielderrors.NewFieldRequired("serviceName"))
|
|
| 33 | 33 |
} |
| 34 | 34 |
|
| 35 | 35 |
if errs := validateTLS(route.TLS); len(errs) != 0 {
|
| ... | ... |
@@ -41,8 +41,8 @@ func ValidateRoute(route *routeapi.Route) errs.ValidationErrorList {
|
| 41 | 41 |
|
| 42 | 42 |
// ValidateTLS tests fields for different types of TLS combinations are set. Called |
| 43 | 43 |
// by ValidateRoute. |
| 44 |
-func validateTLS(tls *routeapi.TLSConfig) errs.ValidationErrorList {
|
|
| 45 |
- result := errs.ValidationErrorList{}
|
|
| 44 |
+func validateTLS(tls *routeapi.TLSConfig) fielderrors.ValidationErrorList {
|
|
| 45 |
+ result := fielderrors.ValidationErrorList{}
|
|
| 46 | 46 |
|
| 47 | 47 |
//no termination, ignore other settings |
| 48 | 48 |
if tls == nil || tls.Termination == "" {
|
| ... | ... |
@@ -52,57 +52,57 @@ func validateTLS(tls *routeapi.TLSConfig) errs.ValidationErrorList {
|
| 52 | 52 |
//reencrypt must specify cert, key, cacert, and destination ca cert |
| 53 | 53 |
if tls.Termination == routeapi.TLSTerminationReencrypt {
|
| 54 | 54 |
if len(tls.Certificate) == 0 {
|
| 55 |
- result = append(result, errs.NewFieldRequired("certificate"))
|
|
| 55 |
+ result = append(result, fielderrors.NewFieldRequired("certificate"))
|
|
| 56 | 56 |
} |
| 57 | 57 |
|
| 58 | 58 |
if len(tls.Key) == 0 {
|
| 59 |
- result = append(result, errs.NewFieldRequired("key"))
|
|
| 59 |
+ result = append(result, fielderrors.NewFieldRequired("key"))
|
|
| 60 | 60 |
} |
| 61 | 61 |
|
| 62 | 62 |
if len(tls.CACertificate) == 0 {
|
| 63 |
- result = append(result, errs.NewFieldRequired("caCertificate"))
|
|
| 63 |
+ result = append(result, fielderrors.NewFieldRequired("caCertificate"))
|
|
| 64 | 64 |
} |
| 65 | 65 |
|
| 66 | 66 |
if len(tls.DestinationCACertificate) == 0 {
|
| 67 |
- result = append(result, errs.NewFieldRequired("destinationCACertificate"))
|
|
| 67 |
+ result = append(result, fielderrors.NewFieldRequired("destinationCACertificate"))
|
|
| 68 | 68 |
} |
| 69 | 69 |
} |
| 70 | 70 |
|
| 71 | 71 |
//passthrough term should not specify any cert |
| 72 | 72 |
if tls.Termination == routeapi.TLSTerminationPassthrough {
|
| 73 | 73 |
if len(tls.Certificate) > 0 {
|
| 74 |
- result = append(result, errs.NewFieldInvalid("certificate", tls.Certificate, "passthrough termination does not support certificates"))
|
|
| 74 |
+ result = append(result, fielderrors.NewFieldInvalid("certificate", tls.Certificate, "passthrough termination does not support certificates"))
|
|
| 75 | 75 |
} |
| 76 | 76 |
|
| 77 | 77 |
if len(tls.Key) > 0 {
|
| 78 |
- result = append(result, errs.NewFieldInvalid("key", tls.Key, "passthrough termination does not support certificates"))
|
|
| 78 |
+ result = append(result, fielderrors.NewFieldInvalid("key", tls.Key, "passthrough termination does not support certificates"))
|
|
| 79 | 79 |
} |
| 80 | 80 |
|
| 81 | 81 |
if len(tls.CACertificate) > 0 {
|
| 82 |
- result = append(result, errs.NewFieldInvalid("caCertificate", tls.CACertificate, "passthrough termination does not support certificates"))
|
|
| 82 |
+ result = append(result, fielderrors.NewFieldInvalid("caCertificate", tls.CACertificate, "passthrough termination does not support certificates"))
|
|
| 83 | 83 |
} |
| 84 | 84 |
|
| 85 | 85 |
if len(tls.DestinationCACertificate) > 0 {
|
| 86 |
- result = append(result, errs.NewFieldInvalid("destinationCACertificate", tls.DestinationCACertificate, "passthrough termination does not support certificates"))
|
|
| 86 |
+ result = append(result, fielderrors.NewFieldInvalid("destinationCACertificate", tls.DestinationCACertificate, "passthrough termination does not support certificates"))
|
|
| 87 | 87 |
} |
| 88 | 88 |
} |
| 89 | 89 |
|
| 90 | 90 |
//edge cert should specify cert, key, and cacert |
| 91 | 91 |
if tls.Termination == routeapi.TLSTerminationEdge {
|
| 92 | 92 |
if len(tls.Certificate) == 0 {
|
| 93 |
- result = append(result, errs.NewFieldRequired("certificate"))
|
|
| 93 |
+ result = append(result, fielderrors.NewFieldRequired("certificate"))
|
|
| 94 | 94 |
} |
| 95 | 95 |
|
| 96 | 96 |
if len(tls.Key) == 0 {
|
| 97 |
- result = append(result, errs.NewFieldRequired("key"))
|
|
| 97 |
+ result = append(result, fielderrors.NewFieldRequired("key"))
|
|
| 98 | 98 |
} |
| 99 | 99 |
|
| 100 | 100 |
if len(tls.CACertificate) == 0 {
|
| 101 |
- result = append(result, errs.NewFieldRequired("caCertificate"))
|
|
| 101 |
+ result = append(result, fielderrors.NewFieldRequired("caCertificate"))
|
|
| 102 | 102 |
} |
| 103 | 103 |
|
| 104 | 104 |
if len(tls.DestinationCACertificate) > 0 {
|
| 105 |
- result = append(result, errs.NewFieldInvalid("destinationCACertificate", tls.DestinationCACertificate, "edge termination does not support destination certificates"))
|
|
| 105 |
+ result = append(result, fielderrors.NewFieldInvalid("destinationCACertificate", tls.DestinationCACertificate, "edge termination does not support destination certificates"))
|
|
| 106 | 106 |
} |
| 107 | 107 |
} |
| 108 | 108 |
|
| ... | ... |
@@ -4,8 +4,8 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
"regexp" |
| 6 | 6 |
|
| 7 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 8 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 9 | 9 |
|
| 10 | 10 |
"github.com/openshift/origin/pkg/template/api" |
| 11 | 11 |
) |
| ... | ... |
@@ -13,37 +13,37 @@ import ( |
| 13 | 13 |
var parameterNameExp = regexp.MustCompile(`^[a-zA-Z0-9\_]+$`) |
| 14 | 14 |
|
| 15 | 15 |
// ValidateParameter tests if required fields in the Parameter are set. |
| 16 |
-func ValidateParameter(param *api.Parameter) (errs errors.ValidationErrorList) {
|
|
| 16 |
+func ValidateParameter(param *api.Parameter) (errs fielderrors.ValidationErrorList) {
|
|
| 17 | 17 |
if len(param.Name) == 0 {
|
| 18 |
- errs = append(errs, errors.NewFieldRequired("name"))
|
|
| 18 |
+ errs = append(errs, fielderrors.NewFieldRequired("name"))
|
|
| 19 | 19 |
return |
| 20 | 20 |
} |
| 21 | 21 |
if !parameterNameExp.MatchString(param.Name) {
|
| 22 |
- errs = append(errs, errors.NewFieldInvalid("name", param.Name, fmt.Sprintf("does not match %v", parameterNameExp)))
|
|
| 22 |
+ errs = append(errs, fielderrors.NewFieldInvalid("name", param.Name, fmt.Sprintf("does not match %v", parameterNameExp)))
|
|
| 23 | 23 |
} |
| 24 | 24 |
return |
| 25 | 25 |
} |
| 26 | 26 |
|
| 27 | 27 |
// ValidateProcessedTemplate tests if required fields in the Template are set for processing |
| 28 |
-func ValidateProcessedTemplate(template *api.Template) errors.ValidationErrorList {
|
|
| 28 |
+func ValidateProcessedTemplate(template *api.Template) fielderrors.ValidationErrorList {
|
|
| 29 | 29 |
return validateTemplateBody(template) |
| 30 | 30 |
} |
| 31 | 31 |
|
| 32 | 32 |
// ValidateTemplate tests if required fields in the Template are set. |
| 33 |
-func ValidateTemplate(template *api.Template) (errs errors.ValidationErrorList) {
|
|
| 33 |
+func ValidateTemplate(template *api.Template) (errs fielderrors.ValidationErrorList) {
|
|
| 34 | 34 |
errs = validation.ValidateObjectMeta(&template.ObjectMeta, true, validation.ValidatePodName).Prefix("metadata")
|
| 35 | 35 |
errs = append(errs, validateTemplateBody(template)...) |
| 36 | 36 |
return |
| 37 | 37 |
} |
| 38 | 38 |
|
| 39 | 39 |
// ValidateTemplateUpdate tests if required fields in the template are set during an update |
| 40 |
-func ValidateTemplateUpdate(oldTemplate, template *api.Template) errors.ValidationErrorList {
|
|
| 40 |
+func ValidateTemplateUpdate(oldTemplate, template *api.Template) fielderrors.ValidationErrorList {
|
|
| 41 | 41 |
errs := validation.ValidateObjectMetaUpdate(&oldTemplate.ObjectMeta, &template.ObjectMeta).Prefix("metadata")
|
| 42 | 42 |
return errs |
| 43 | 43 |
} |
| 44 | 44 |
|
| 45 | 45 |
// validateTemplateBody checks the body of a template. |
| 46 |
-func validateTemplateBody(template *api.Template) (errs errors.ValidationErrorList) {
|
|
| 46 |
+func validateTemplateBody(template *api.Template) (errs fielderrors.ValidationErrorList) {
|
|
| 47 | 47 |
for i := range template.Parameters {
|
| 48 | 48 |
paramErr := ValidateParameter(&template.Parameters[i]) |
| 49 | 49 |
errs = append(errs, paramErr.PrefixIndex(i).Prefix("parameters")...)
|
| ... | ... |
@@ -5,10 +5,10 @@ import ( |
| 5 | 5 |
"reflect" |
| 6 | 6 |
|
| 7 | 7 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 8 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 9 | 8 |
kmeta "github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 12 |
configapi "github.com/openshift/origin/pkg/config/api" |
| 13 | 13 |
deployapi "github.com/openshift/origin/pkg/deploy/api" |
| 14 | 14 |
) |
| ... | ... |
@@ -99,11 +99,11 @@ func AddObjectLabels(obj runtime.Object, labels labels.Set) error {
|
| 99 | 99 |
} |
| 100 | 100 |
|
| 101 | 101 |
// AddConfigLabels adds new label(s) to all resources defined in the given Config. |
| 102 |
-func AddConfigLabels(c *configapi.Config, labels labels.Set) errs.ValidationErrorList {
|
|
| 103 |
- itemErrors := errs.ValidationErrorList{}
|
|
| 102 |
+func AddConfigLabels(c *configapi.Config, labels labels.Set) fielderrors.ValidationErrorList {
|
|
| 103 |
+ itemErrors := fielderrors.ValidationErrorList{}
|
|
| 104 | 104 |
for i, in := range c.Items {
|
| 105 | 105 |
if err := AddObjectLabels(in, labels); err != nil {
|
| 106 |
- reportError(&itemErrors, i, *errs.NewFieldInvalid("labels", err, fmt.Sprintf("error applying labels %v to %v", labels, in)))
|
|
| 106 |
+ reportError(&itemErrors, i, *fielderrors.NewFieldInvalid("labels", err, fmt.Sprintf("error applying labels %v to %v", labels, in)))
|
|
| 107 | 107 |
} |
| 108 | 108 |
} |
| 109 | 109 |
return itemErrors.Prefix("Config")
|
| ... | ... |
@@ -4,8 +4,8 @@ import ( |
| 4 | 4 |
"testing" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 7 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest/resttest" |
| 8 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 9 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/tools" |
| 10 | 10 |
|
| 11 | 11 |
"github.com/openshift/origin/pkg/api/latest" |
| ... | ... |
@@ -40,11 +40,11 @@ func validChanged() *api.Template {
|
| 40 | 40 |
func TestStorage(t *testing.T) {
|
| 41 | 41 |
_, helper := newHelper(t) |
| 42 | 42 |
storage := NewREST(helper) |
| 43 |
- var _ apiserver.RESTCreater = storage |
|
| 44 |
- var _ apiserver.RESTLister = storage |
|
| 45 |
- var _ apiserver.RESTGracefulDeleter = storage |
|
| 46 |
- var _ apiserver.RESTUpdater = storage |
|
| 47 |
- var _ apiserver.RESTGetter = storage |
|
| 43 |
+ var _ rest.Creater = storage |
|
| 44 |
+ var _ rest.Lister = storage |
|
| 45 |
+ var _ rest.GracefulDeleter = storage |
|
| 46 |
+ var _ rest.Updater = storage |
|
| 47 |
+ var _ rest.Getter = storage |
|
| 48 | 48 |
} |
| 49 | 49 |
|
| 50 | 50 |
func TestCreate(t *testing.T) {
|
| ... | ... |
@@ -12,6 +12,7 @@ import ( |
| 12 | 12 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic" |
| 13 | 13 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 14 | 14 |
utilerr "github.com/GoogleCloudPlatform/kubernetes/pkg/util/errors" |
| 15 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 15 | 16 |
"github.com/golang/glog" |
| 16 | 17 |
|
| 17 | 18 |
"github.com/openshift/origin/pkg/template" |
| ... | ... |
@@ -35,12 +36,15 @@ func (templateStrategy) NamespaceScoped() bool {
|
| 35 | 35 |
return true |
| 36 | 36 |
} |
| 37 | 37 |
|
| 38 |
+func (templateStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 39 |
+func (templateStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 40 |
+ |
|
| 38 | 41 |
// ResetBeforeCreate clears fields that are not allowed to be set by end users on creation. |
| 39 | 42 |
func (templateStrategy) ResetBeforeCreate(obj runtime.Object) {
|
| 40 | 43 |
} |
| 41 | 44 |
|
| 42 | 45 |
// Validate validates a new template. |
| 43 |
-func (templateStrategy) Validate(obj runtime.Object) errors.ValidationErrorList {
|
|
| 46 |
+func (templateStrategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 44 | 47 |
template := obj.(*api.Template) |
| 45 | 48 |
return validation.ValidateTemplate(template) |
| 46 | 49 |
} |
| ... | ... |
@@ -51,7 +55,7 @@ func (templateStrategy) AllowCreateOnUpdate() bool {
|
| 51 | 51 |
} |
| 52 | 52 |
|
| 53 | 53 |
// ValidateUpdate is the default update validation for an end user. |
| 54 |
-func (templateStrategy) ValidateUpdate(obj, old runtime.Object) errors.ValidationErrorList {
|
|
| 54 |
+func (templateStrategy) ValidateUpdate(obj, old runtime.Object) fielderrors.ValidationErrorList {
|
|
| 55 | 55 |
return validation.ValidateTemplateUpdate(obj.(*api.Template), old.(*api.Template)) |
| 56 | 56 |
} |
| 57 | 57 |
|
| ... | ... |
@@ -6,9 +6,9 @@ import ( |
| 6 | 6 |
"strings" |
| 7 | 7 |
|
| 8 | 8 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 9 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 12 |
configapi "github.com/openshift/origin/pkg/config/api" |
| 13 | 13 |
deployapi "github.com/openshift/origin/pkg/deploy/api" |
| 14 | 14 |
"github.com/openshift/origin/pkg/template/api" |
| ... | ... |
@@ -19,8 +19,8 @@ var parameterExp = regexp.MustCompile(`\$\{([a-zA-Z0-9\_]+)\}`)
|
| 19 | 19 |
|
| 20 | 20 |
// reportError reports the single item validation error and properly set the |
| 21 | 21 |
// prefix and index to match the Config item JSON index |
| 22 |
-func reportError(allErrs *errs.ValidationErrorList, index int, err errs.ValidationError) {
|
|
| 23 |
- i := errs.ValidationErrorList{}
|
|
| 22 |
+func reportError(allErrs *fielderrors.ValidationErrorList, index int, err fielderrors.ValidationError) {
|
|
| 23 |
+ i := fielderrors.ValidationErrorList{}
|
|
| 24 | 24 |
*allErrs = append(*allErrs, append(i, &err).PrefixIndex(index).Prefix("item")...)
|
| 25 | 25 |
} |
| 26 | 26 |
|
| ... | ... |
@@ -38,22 +38,22 @@ func NewProcessor(generators map[string]Generator) *Processor {
|
| 38 | 38 |
// Parameter values using the defined set of generators first, and then it |
| 39 | 39 |
// substitutes all Parameter expression occurrences with their corresponding |
| 40 | 40 |
// values (currently in the containers' Environment variables only). |
| 41 |
-func (p *Processor) Process(template *api.Template) (*configapi.Config, errs.ValidationErrorList) {
|
|
| 42 |
- templateErrors := errs.ValidationErrorList{}
|
|
| 41 |
+func (p *Processor) Process(template *api.Template) (*configapi.Config, fielderrors.ValidationErrorList) {
|
|
| 42 |
+ templateErrors := fielderrors.ValidationErrorList{}
|
|
| 43 | 43 |
|
| 44 | 44 |
if err := p.GenerateParameterValues(template); err != nil {
|
| 45 |
- return nil, append(templateErrors.Prefix("Template"), errs.NewFieldInvalid("parameters", err, "failure to generate parameter value"))
|
|
| 45 |
+ return nil, append(templateErrors.Prefix("Template"), fielderrors.NewFieldInvalid("parameters", err, "failure to generate parameter value"))
|
|
| 46 | 46 |
} |
| 47 | 47 |
|
| 48 | 48 |
for i, item := range template.Objects {
|
| 49 | 49 |
newItem, err := p.SubstituteParameters(template.Parameters, item) |
| 50 | 50 |
if err != nil {
|
| 51 |
- reportError(&templateErrors, i, *errs.NewFieldNotSupported("parameters", err))
|
|
| 51 |
+ reportError(&templateErrors, i, *fielderrors.NewFieldNotSupported("parameters", err))
|
|
| 52 | 52 |
} |
| 53 | 53 |
// Remove namespace from the item |
| 54 | 54 |
itemMeta, err := meta.Accessor(newItem) |
| 55 | 55 |
if err != nil {
|
| 56 |
- reportError(&templateErrors, i, *errs.NewFieldInvalid("namespace", err, "failed to remove the item namespace"))
|
|
| 56 |
+ reportError(&templateErrors, i, *fielderrors.NewFieldInvalid("namespace", err, "failed to remove the item namespace"))
|
|
| 57 | 57 |
} |
| 58 | 58 |
itemMeta.SetNamespace("")
|
| 59 | 59 |
template.Objects[i] = newItem |
| ... | ... |
@@ -4,8 +4,8 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
"strings" |
| 6 | 6 |
|
| 7 |
- errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 8 | 7 |
kvalidation "github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" |
| 8 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 9 | 9 |
"github.com/openshift/origin/pkg/user/api" |
| 10 | 10 |
) |
| 11 | 11 |
|
| ... | ... |
@@ -75,90 +75,90 @@ func ValidateIdentityProviderUserName(name string) (bool, string) {
|
| 75 | 75 |
return ValidateUserName(name, false) |
| 76 | 76 |
} |
| 77 | 77 |
|
| 78 |
-func ValidateUser(user *api.User) errs.ValidationErrorList {
|
|
| 79 |
- allErrs := errs.ValidationErrorList{}
|
|
| 78 |
+func ValidateUser(user *api.User) fielderrors.ValidationErrorList {
|
|
| 79 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 80 | 80 |
allErrs = append(allErrs, kvalidation.ValidateObjectMeta(&user.ObjectMeta, false, ValidateUserName).Prefix("metadata")...)
|
| 81 | 81 |
for index, identity := range user.Identities {
|
| 82 | 82 |
if ok, msg := ValidateIdentityName(identity, false); !ok {
|
| 83 |
- allErrs = append(allErrs, errs.NewFieldInvalid(fmt.Sprintf("identities[%d]", index), identity, msg))
|
|
| 83 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid(fmt.Sprintf("identities[%d]", index), identity, msg))
|
|
| 84 | 84 |
} |
| 85 | 85 |
} |
| 86 | 86 |
return allErrs |
| 87 | 87 |
} |
| 88 | 88 |
|
| 89 |
-func ValidateUserUpdate(user *api.User, old *api.User) errs.ValidationErrorList {
|
|
| 90 |
- allErrs := errs.ValidationErrorList{}
|
|
| 89 |
+func ValidateUserUpdate(user *api.User, old *api.User) fielderrors.ValidationErrorList {
|
|
| 90 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 91 | 91 |
allErrs = append(allErrs, kvalidation.ValidateObjectMetaUpdate(&old.ObjectMeta, &user.ObjectMeta).Prefix("metadata")...)
|
| 92 | 92 |
return allErrs |
| 93 | 93 |
} |
| 94 | 94 |
|
| 95 |
-func ValidateIdentity(identity *api.Identity) errs.ValidationErrorList {
|
|
| 96 |
- allErrs := errs.ValidationErrorList{}
|
|
| 95 |
+func ValidateIdentity(identity *api.Identity) fielderrors.ValidationErrorList {
|
|
| 96 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 97 | 97 |
allErrs = append(allErrs, kvalidation.ValidateObjectMeta(&identity.ObjectMeta, false, ValidateIdentityName).Prefix("metadata")...)
|
| 98 | 98 |
|
| 99 | 99 |
if len(identity.ProviderName) == 0 {
|
| 100 |
- allErrs = append(allErrs, errs.NewFieldRequired("providerName"))
|
|
| 100 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("providerName"))
|
|
| 101 | 101 |
} else if ok, msg := ValidateIdentityProviderName(identity.ProviderName); !ok {
|
| 102 |
- allErrs = append(allErrs, errs.NewFieldInvalid("providerName", identity.ProviderName, msg))
|
|
| 102 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("providerName", identity.ProviderName, msg))
|
|
| 103 | 103 |
} |
| 104 | 104 |
|
| 105 | 105 |
if len(identity.ProviderUserName) == 0 {
|
| 106 |
- allErrs = append(allErrs, errs.NewFieldRequired("providerUserName"))
|
|
| 106 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("providerUserName"))
|
|
| 107 | 107 |
} else if ok, msg := ValidateIdentityProviderName(identity.ProviderUserName); !ok {
|
| 108 |
- allErrs = append(allErrs, errs.NewFieldInvalid("providerUserName", identity.ProviderUserName, msg))
|
|
| 108 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("providerUserName", identity.ProviderUserName, msg))
|
|
| 109 | 109 |
} |
| 110 | 110 |
|
| 111 | 111 |
if len(identity.ProviderName) > 0 && len(identity.ProviderUserName) > 0 {
|
| 112 | 112 |
expectedIdentityName := identity.ProviderName + ":" + identity.ProviderUserName |
| 113 | 113 |
if identity.Name != expectedIdentityName {
|
| 114 |
- allErrs = append(allErrs, errs.NewFieldInvalid("user.name", identity.User.Name, fmt.Sprintf("must be %s", expectedIdentityName)))
|
|
| 114 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("user.name", identity.User.Name, fmt.Sprintf("must be %s", expectedIdentityName)))
|
|
| 115 | 115 |
} |
| 116 | 116 |
} |
| 117 | 117 |
|
| 118 | 118 |
if ok, msg := ValidateUserName(identity.User.Name, false); !ok {
|
| 119 |
- allErrs = append(allErrs, errs.NewFieldInvalid("user.name", identity.User.Name, msg))
|
|
| 119 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("user.name", identity.User.Name, msg))
|
|
| 120 | 120 |
} |
| 121 | 121 |
if len(identity.User.Name) == 0 && len(identity.User.UID) != 0 {
|
| 122 |
- allErrs = append(allErrs, errs.NewFieldInvalid("user.uid", identity.User.UID, "may not be set if user.name is empty"))
|
|
| 122 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("user.uid", identity.User.UID, "may not be set if user.name is empty"))
|
|
| 123 | 123 |
} |
| 124 | 124 |
if len(identity.User.Name) != 0 && len(identity.User.UID) == 0 {
|
| 125 |
- allErrs = append(allErrs, errs.NewFieldRequired("user.uid"))
|
|
| 125 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("user.uid"))
|
|
| 126 | 126 |
} |
| 127 | 127 |
return allErrs |
| 128 | 128 |
} |
| 129 | 129 |
|
| 130 |
-func ValidateIdentityUpdate(identity *api.Identity, old *api.Identity) errs.ValidationErrorList {
|
|
| 131 |
- allErrs := errs.ValidationErrorList{}
|
|
| 130 |
+func ValidateIdentityUpdate(identity *api.Identity, old *api.Identity) fielderrors.ValidationErrorList {
|
|
| 131 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 132 | 132 |
|
| 133 | 133 |
allErrs = append(allErrs, kvalidation.ValidateObjectMetaUpdate(&old.ObjectMeta, &identity.ObjectMeta).Prefix("metadata")...)
|
| 134 | 134 |
|
| 135 | 135 |
if identity.ProviderName != old.ProviderName {
|
| 136 |
- allErrs = append(allErrs, errs.NewFieldInvalid("providerName", identity.ProviderName, "may not change providerName"))
|
|
| 136 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("providerName", identity.ProviderName, "may not change providerName"))
|
|
| 137 | 137 |
} |
| 138 | 138 |
if identity.ProviderUserName != old.ProviderUserName {
|
| 139 |
- allErrs = append(allErrs, errs.NewFieldInvalid("providerUserName", identity.ProviderUserName, "may not change providerUserName"))
|
|
| 139 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("providerUserName", identity.ProviderUserName, "may not change providerUserName"))
|
|
| 140 | 140 |
} |
| 141 | 141 |
|
| 142 | 142 |
return allErrs |
| 143 | 143 |
} |
| 144 | 144 |
|
| 145 |
-func ValidateUserIdentityMapping(mapping *api.UserIdentityMapping) errs.ValidationErrorList {
|
|
| 146 |
- allErrs := errs.ValidationErrorList{}
|
|
| 145 |
+func ValidateUserIdentityMapping(mapping *api.UserIdentityMapping) fielderrors.ValidationErrorList {
|
|
| 146 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 147 | 147 |
allErrs = append(allErrs, kvalidation.ValidateObjectMeta(&mapping.ObjectMeta, false, ValidateIdentityName).Prefix("metadata")...)
|
| 148 | 148 |
if len(mapping.Identity.Name) == 0 {
|
| 149 |
- allErrs = append(allErrs, errs.NewFieldRequired("identity.name"))
|
|
| 149 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("identity.name"))
|
|
| 150 | 150 |
} |
| 151 | 151 |
if mapping.Identity.Name != mapping.Name {
|
| 152 |
- allErrs = append(allErrs, errs.NewFieldInvalid("identity.name", mapping.Identity.Name, "must match metadata.name"))
|
|
| 152 |
+ allErrs = append(allErrs, fielderrors.NewFieldInvalid("identity.name", mapping.Identity.Name, "must match metadata.name"))
|
|
| 153 | 153 |
} |
| 154 | 154 |
if len(mapping.User.Name) == 0 {
|
| 155 |
- allErrs = append(allErrs, errs.NewFieldRequired("user.name"))
|
|
| 155 |
+ allErrs = append(allErrs, fielderrors.NewFieldRequired("user.name"))
|
|
| 156 | 156 |
} |
| 157 | 157 |
return allErrs |
| 158 | 158 |
} |
| 159 | 159 |
|
| 160 |
-func ValidateUserIdentityMappingUpdate(mapping *api.UserIdentityMapping, old *api.UserIdentityMapping) errs.ValidationErrorList {
|
|
| 161 |
- allErrs := errs.ValidationErrorList{}
|
|
| 160 |
+func ValidateUserIdentityMappingUpdate(mapping *api.UserIdentityMapping, old *api.UserIdentityMapping) fielderrors.ValidationErrorList {
|
|
| 161 |
+ allErrs := fielderrors.ValidationErrorList{}
|
|
| 162 | 162 |
allErrs = append(allErrs, ValidateUserIdentityMapping(mapping)...) |
| 163 | 163 |
allErrs = append(allErrs, kvalidation.ValidateObjectMetaUpdate(&old.ObjectMeta, &mapping.ObjectMeta).Prefix("metadata")...)
|
| 164 | 164 |
return allErrs |
| ... | ... |
@@ -2,7 +2,7 @@ package identity |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 5 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 6 | 6 |
|
| 7 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| ... | ... |
@@ -30,8 +30,8 @@ func identityName(provider, identity string) string {
|
| 30 | 30 |
// Storage is an interface for a standard REST Storage backend |
| 31 | 31 |
// TODO: move me somewhere common |
| 32 | 32 |
type Storage interface {
|
| 33 |
- apiserver.RESTLister |
|
| 34 |
- apiserver.RESTGetter |
|
| 33 |
+ rest.Lister |
|
| 34 |
+ rest.Getter |
|
| 35 | 35 |
|
| 36 | 36 |
Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, error) |
| 37 | 37 |
Update(ctx kapi.Context, obj runtime.Object) (runtime.Object, bool, error) |
| ... | ... |
@@ -4,11 +4,11 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- kerrs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 12 |
|
| 13 | 13 |
"github.com/openshift/origin/pkg/user/api" |
| 14 | 14 |
"github.com/openshift/origin/pkg/user/api/validation" |
| ... | ... |
@@ -23,6 +23,9 @@ type identityStrategy struct {
|
| 23 | 23 |
// objects via the REST API. |
| 24 | 24 |
var Strategy = identityStrategy{kapi.Scheme}
|
| 25 | 25 |
|
| 26 |
+func (identityStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 27 |
+func (identityStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 28 |
+ |
|
| 26 | 29 |
// NamespaceScoped is false for users |
| 27 | 30 |
func (identityStrategy) NamespaceScoped() bool {
|
| 28 | 31 |
return false |
| ... | ... |
@@ -38,7 +41,7 @@ func (identityStrategy) ResetBeforeCreate(obj runtime.Object) {
|
| 38 | 38 |
} |
| 39 | 39 |
|
| 40 | 40 |
// Validate validates a new user |
| 41 |
-func (identityStrategy) Validate(obj runtime.Object) kerrs.ValidationErrorList {
|
|
| 41 |
+func (identityStrategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 42 | 42 |
identity := obj.(*api.Identity) |
| 43 | 43 |
return validation.ValidateIdentity(identity) |
| 44 | 44 |
} |
| ... | ... |
@@ -49,7 +52,7 @@ func (identityStrategy) AllowCreateOnUpdate() bool {
|
| 49 | 49 |
} |
| 50 | 50 |
|
| 51 | 51 |
// ValidateUpdate is the default update validation for an identity |
| 52 |
-func (identityStrategy) ValidateUpdate(obj, old runtime.Object) kerrs.ValidationErrorList {
|
|
| 52 |
+func (identityStrategy) ValidateUpdate(obj, old runtime.Object) fielderrors.ValidationErrorList {
|
|
| 53 | 53 |
return validation.ValidateIdentityUpdate(obj.(*api.Identity), old.(*api.Identity)) |
| 54 | 54 |
} |
| 55 | 55 |
|
| ... | ... |
@@ -11,6 +11,7 @@ import ( |
| 11 | 11 |
etcdgeneric "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic/etcd" |
| 12 | 12 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 13 | 13 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/tools" |
| 14 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 14 | 15 |
|
| 15 | 16 |
"github.com/openshift/origin/pkg/user/api" |
| 16 | 17 |
"github.com/openshift/origin/pkg/user/api/validation" |
| ... | ... |
@@ -63,7 +64,7 @@ func (r *REST) Get(ctx kapi.Context, name string) (runtime.Object, error) {
|
| 63 | 63 |
name = user.GetName() |
| 64 | 64 |
} |
| 65 | 65 |
if ok, details := validation.ValidateUserName(name, false); !ok {
|
| 66 |
- return nil, kerrs.NewFieldInvalid("metadata.name", name, details)
|
|
| 66 |
+ return nil, fielderrors.NewFieldInvalid("metadata.name", name, details)
|
|
| 67 | 67 |
} |
| 68 | 68 |
|
| 69 | 69 |
return r.Etcd.Get(ctx, name) |
| ... | ... |
@@ -2,7 +2,7 @@ package user |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 5 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 6 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 7 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 8 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| ... | ... |
@@ -25,8 +25,8 @@ type Registry interface {
|
| 25 | 25 |
// Storage is an interface for a standard REST Storage backend |
| 26 | 26 |
// TODO: move me somewhere common |
| 27 | 27 |
type Storage interface {
|
| 28 |
- apiserver.RESTLister |
|
| 29 |
- apiserver.RESTGetter |
|
| 28 |
+ rest.Lister |
|
| 29 |
+ rest.Getter |
|
| 30 | 30 |
|
| 31 | 31 |
Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, error) |
| 32 | 32 |
Update(ctx kapi.Context, obj runtime.Object) (runtime.Object, bool, error) |
| ... | ... |
@@ -4,11 +4,11 @@ import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
|
| 6 | 6 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 7 |
- kerrs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
|
| 8 | 7 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields" |
| 9 | 8 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels" |
| 10 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/registry/generic" |
| 11 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 12 |
|
| 13 | 13 |
"github.com/openshift/origin/pkg/user/api" |
| 14 | 14 |
"github.com/openshift/origin/pkg/user/api/validation" |
| ... | ... |
@@ -23,6 +23,9 @@ type userStrategy struct {
|
| 23 | 23 |
// objects via the REST API. |
| 24 | 24 |
var Strategy = userStrategy{kapi.Scheme}
|
| 25 | 25 |
|
| 26 |
+func (userStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 27 |
+func (userStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 28 |
+ |
|
| 26 | 29 |
// NamespaceScoped is false for users |
| 27 | 30 |
func (userStrategy) NamespaceScoped() bool {
|
| 28 | 31 |
return false |
| ... | ... |
@@ -36,7 +39,7 @@ func (userStrategy) ResetBeforeCreate(obj runtime.Object) {
|
| 36 | 36 |
} |
| 37 | 37 |
|
| 38 | 38 |
// Validate validates a new user |
| 39 |
-func (userStrategy) Validate(obj runtime.Object) kerrs.ValidationErrorList {
|
|
| 39 |
+func (userStrategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 40 | 40 |
user := obj.(*api.User) |
| 41 | 41 |
return validation.ValidateUser(user) |
| 42 | 42 |
} |
| ... | ... |
@@ -47,7 +50,7 @@ func (userStrategy) AllowCreateOnUpdate() bool {
|
| 47 | 47 |
} |
| 48 | 48 |
|
| 49 | 49 |
// ValidateUpdate is the default update validation for an end user. |
| 50 |
-func (userStrategy) ValidateUpdate(obj, old runtime.Object) kerrs.ValidationErrorList {
|
|
| 50 |
+func (userStrategy) ValidateUpdate(obj, old runtime.Object) fielderrors.ValidationErrorList {
|
|
| 51 | 51 |
return validation.ValidateUserUpdate(obj.(*api.User), old.(*api.User)) |
| 52 | 52 |
} |
| 53 | 53 |
|
| ... | ... |
@@ -2,7 +2,7 @@ package useridentitymapping |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 5 |
- "github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
|
| 5 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 6 | 6 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 7 | 7 |
|
| 8 | 8 |
"github.com/openshift/origin/pkg/user/api" |
| ... | ... |
@@ -23,8 +23,8 @@ type Registry interface {
|
| 23 | 23 |
// Storage is an interface for a standard REST Storage backend |
| 24 | 24 |
// TODO: move me somewhere common |
| 25 | 25 |
type Storage interface {
|
| 26 |
- apiserver.RESTGetter |
|
| 27 |
- apiserver.RESTDeleter |
|
| 26 |
+ rest.Getter |
|
| 27 |
+ rest.Deleter |
|
| 28 | 28 |
|
| 29 | 29 |
Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, error) |
| 30 | 30 |
Update(ctx kapi.Context, obj runtime.Object) (runtime.Object, bool, error) |
| ... | ... |
@@ -9,6 +9,7 @@ import ( |
| 9 | 9 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
| 10 | 10 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" |
| 11 | 11 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" |
| 12 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/util/fielderrors" |
|
| 12 | 13 |
"github.com/golang/glog" |
| 13 | 14 |
|
| 14 | 15 |
"github.com/openshift/origin/pkg/user/api" |
| ... | ... |
@@ -39,6 +40,9 @@ type userIdentityMappingStrategy struct {
|
| 39 | 39 |
// objects via the REST API. |
| 40 | 40 |
var Strategy = userIdentityMappingStrategy{kapi.Scheme}
|
| 41 | 41 |
|
| 42 |
+func (userIdentityMappingStrategy) PrepareForCreate(obj runtime.Object) {}
|
|
| 43 |
+func (userIdentityMappingStrategy) PrepareForUpdate(obj, old runtime.Object) {}
|
|
| 44 |
+ |
|
| 42 | 45 |
// New returns a new UserIdentityMapping for use with Create. |
| 43 | 46 |
func (r *REST) New() runtime.Object {
|
| 44 | 47 |
return &api.UserIdentityMapping{}
|
| ... | ... |
@@ -95,13 +99,13 @@ func (s userIdentityMappingStrategy) ResetBeforeUpdate(obj runtime.Object) {
|
| 95 | 95 |
} |
| 96 | 96 |
|
| 97 | 97 |
// Validate validates a new UserIdentityMapping. |
| 98 |
-func (s userIdentityMappingStrategy) Validate(obj runtime.Object) kerrs.ValidationErrorList {
|
|
| 98 |
+func (s userIdentityMappingStrategy) Validate(obj runtime.Object) fielderrors.ValidationErrorList {
|
|
| 99 | 99 |
mapping := obj.(*api.UserIdentityMapping) |
| 100 | 100 |
return validation.ValidateUserIdentityMapping(mapping) |
| 101 | 101 |
} |
| 102 | 102 |
|
| 103 | 103 |
// Validate validates an updated UserIdentityMapping. |
| 104 |
-func (s userIdentityMappingStrategy) ValidateUpdate(obj runtime.Object, old runtime.Object) kerrs.ValidationErrorList {
|
|
| 104 |
+func (s userIdentityMappingStrategy) ValidateUpdate(obj runtime.Object, old runtime.Object) fielderrors.ValidationErrorList {
|
|
| 105 | 105 |
mapping := obj.(*api.UserIdentityMapping) |
| 106 | 106 |
oldmapping := old.(*api.UserIdentityMapping) |
| 107 | 107 |
return validation.ValidateUserIdentityMappingUpdate(mapping, oldmapping) |
| ... | ... |
@@ -187,8 +191,8 @@ func (s *REST) createOrUpdate(ctx kapi.Context, obj runtime.Object, forceCreate |
| 187 | 187 |
|
| 188 | 188 |
// Validate identity |
| 189 | 189 |
if kerrs.IsNotFound(identityErr) {
|
| 190 |
- errs := kerrs.ValidationErrorList([]error{
|
|
| 191 |
- kerrs.NewFieldInvalid("identity.name", mapping.Identity.Name, "referenced identity does not exist"),
|
|
| 190 |
+ errs := fielderrors.ValidationErrorList([]error{
|
|
| 191 |
+ fielderrors.NewFieldInvalid("identity.name", mapping.Identity.Name, "referenced identity does not exist"),
|
|
| 192 | 192 |
}) |
| 193 | 193 |
return nil, false, kerrs.NewInvalid("UserIdentityMapping", mapping.Name, errs)
|
| 194 | 194 |
} |
| ... | ... |
@@ -196,8 +200,8 @@ func (s *REST) createOrUpdate(ctx kapi.Context, obj runtime.Object, forceCreate |
| 196 | 196 |
// Get new user |
| 197 | 197 |
newUser, err := s.userRegistry.GetUser(ctx, mapping.User.Name) |
| 198 | 198 |
if kerrs.IsNotFound(err) {
|
| 199 |
- errs := kerrs.ValidationErrorList([]error{
|
|
| 200 |
- kerrs.NewFieldInvalid("user.name", mapping.User.Name, "referenced user does not exist"),
|
|
| 199 |
+ errs := fielderrors.ValidationErrorList([]error{
|
|
| 200 |
+ fielderrors.NewFieldInvalid("user.name", mapping.User.Name, "referenced user does not exist"),
|
|
| 201 | 201 |
}) |
| 202 | 202 |
return nil, false, kerrs.NewInvalid("UserIdentityMapping", mapping.Name, errs)
|
| 203 | 203 |
} |
| ... | ... |
@@ -10,6 +10,7 @@ import ( |
| 10 | 10 |
|
| 11 | 11 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 12 | 12 |
klatest "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" |
| 13 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 13 | 14 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
| 14 | 15 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 15 | 16 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| ... | ... |
@@ -208,7 +209,7 @@ func NewTestBuildOpenshift(t *testing.T) *testBuildOpenshift {
|
| 208 | 208 |
} |
| 209 | 209 |
buildClone, buildConfigInstantiate := buildgenerator.NewREST(buildGenerator) |
| 210 | 210 |
|
| 211 |
- storage := map[string]apiserver.RESTStorage{
|
|
| 211 |
+ storage := map[string]rest.Storage{
|
|
| 212 | 212 |
"builds": buildregistry.NewREST(buildEtcd), |
| 213 | 213 |
"builds/clone": buildClone, |
| 214 | 214 |
"buildConfigs": buildconfigregistry.NewREST(buildEtcd), |
| ... | ... |
@@ -11,6 +11,7 @@ import ( |
| 11 | 11 |
|
| 12 | 12 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 13 | 13 |
klatest "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" |
| 14 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 14 | 15 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
| 15 | 16 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 16 | 17 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| ... | ... |
@@ -306,15 +307,6 @@ func assertEnvVarEquals(name string, value string, deployment *kapi.ReplicationC |
| 306 | 306 |
t.Fatalf("Expected env var with name %s and value %s", name, value)
|
| 307 | 307 |
} |
| 308 | 308 |
|
| 309 |
-type podInfoGetter struct {
|
|
| 310 |
- PodInfo kapi.PodInfo |
|
| 311 |
- Error error |
|
| 312 |
-} |
|
| 313 |
- |
|
| 314 |
-func (p *podInfoGetter) GetPodInfo(host, namespace, podID string) (kapi.PodInfo, error) {
|
|
| 315 |
- return p.PodInfo, p.Error |
|
| 316 |
-} |
|
| 317 |
- |
|
| 318 | 309 |
type testOpenshift struct {
|
| 319 | 310 |
Client *osclient.Client |
| 320 | 311 |
KubeClient kclient.Interface |
| ... | ... |
@@ -389,7 +381,7 @@ func NewTestOpenshift(t *testing.T) *testOpenshift {
|
| 389 | 389 |
} |
| 390 | 390 |
buildClone, buildConfigInstantiate := buildgenerator.NewREST(buildGenerator) |
| 391 | 391 |
|
| 392 |
- storage := map[string]apiserver.RESTStorage{
|
|
| 392 |
+ storage := map[string]rest.Storage{
|
|
| 393 | 393 |
"images": imageStorage, |
| 394 | 394 |
"imageStreams": imageRepositoryStorage, |
| 395 | 395 |
"imageStreamImages": imageStreamImageStorage, |
| ... | ... |
@@ -11,6 +11,7 @@ import ( |
| 11 | 11 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 12 | 12 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" |
| 13 | 13 |
klatest "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" |
| 14 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 14 | 15 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
| 15 | 16 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 16 | 17 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| ... | ... |
@@ -76,6 +77,10 @@ func TestImageRepositoryCreate(t *testing.T) {
|
| 76 | 76 |
if err != nil {
|
| 77 | 77 |
t.Fatalf("Unexpected error: %v", err)
|
| 78 | 78 |
} |
| 79 |
+ |
|
| 80 |
+ // compareImageRepos compares everything except the status.dockerimagerepository which can be |
|
| 81 |
+ // changed after create |
|
| 82 |
+ actual.Status.DockerImageRepository = expected.Status.DockerImageRepository |
|
| 79 | 83 |
if !reflect.DeepEqual(expected, actual) {
|
| 80 | 84 |
t.Errorf("unexpected object: %s", util.ObjectDiff(expected, actual))
|
| 81 | 85 |
} |
| ... | ... |
@@ -299,7 +304,7 @@ func NewTestImageOpenShift(t *testing.T) *testImageOpenshift {
|
| 299 | 299 |
imageRepositoryStorage, imageRepositoryStatus := imagerepositoryetcd.NewREST(etcdHelper, imagerepository.DefaultRegistryFunc(func() (string, bool) { return openshift.dockerServer.URL, true }))
|
| 300 | 300 |
imageRepositoryRegistry := imagerepository.NewRegistry(imageRepositoryStorage, imageRepositoryStatus) |
| 301 | 301 |
|
| 302 |
- storage := map[string]apiserver.RESTStorage{
|
|
| 302 |
+ storage := map[string]rest.Storage{
|
|
| 303 | 303 |
"images": imageStorage, |
| 304 | 304 |
"imageRepositories": imageRepositoryStorage, |
| 305 | 305 |
"imageRepositories/status": imageRepositoryStatus, |
| ... | ... |
@@ -9,6 +9,7 @@ import ( |
| 9 | 9 |
|
| 10 | 10 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 11 | 11 |
klatest "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" |
| 12 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 12 | 13 |
kv1beta1 "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta1" |
| 13 | 14 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
| 14 | 15 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| ... | ... |
@@ -39,8 +40,8 @@ func TestProjectIsNamespace(t *testing.T) {
|
| 39 | 39 |
|
| 40 | 40 |
// create a kube and its client |
| 41 | 41 |
kubeInterfaces, _ := klatest.InterfacesFor(klatest.Version) |
| 42 |
- namespaceStorage := namespaceetcd.NewREST(etcdHelper) |
|
| 43 |
- kubeStorage := map[string]apiserver.RESTStorage{
|
|
| 42 |
+ namespaceStorage, _, _ := namespaceetcd.NewStorage(etcdHelper) |
|
| 43 |
+ kubeStorage := map[string]rest.Storage{
|
|
| 44 | 44 |
"namespaces": namespaceStorage, |
| 45 | 45 |
} |
| 46 | 46 |
|
| ... | ... |
@@ -76,7 +77,7 @@ func TestProjectIsNamespace(t *testing.T) {
|
| 76 | 76 |
|
| 77 | 77 |
// create an origin |
| 78 | 78 |
originInterfaces, _ := latest.InterfacesFor(latest.Version) |
| 79 |
- originStorage := map[string]apiserver.RESTStorage{
|
|
| 79 |
+ originStorage := map[string]rest.Storage{
|
|
| 80 | 80 |
"projects": projectregistry.NewREST(kubeClient.Namespaces(), nil), |
| 81 | 81 |
} |
| 82 | 82 |
osVersion := &apiserver.APIGroupVersion{
|
| ... | ... |
@@ -9,6 +9,7 @@ import ( |
| 9 | 9 |
"testing" |
| 10 | 10 |
|
| 11 | 11 |
kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" |
| 12 |
+ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/rest" |
|
| 12 | 13 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver" |
| 13 | 14 |
kclient "github.com/GoogleCloudPlatform/kubernetes/pkg/client" |
| 14 | 15 |
"github.com/GoogleCloudPlatform/kubernetes/pkg/master" |
| ... | ... |
@@ -53,7 +54,7 @@ func TestTemplateTransformationFromConfig(t *testing.T) {
|
| 53 | 53 |
|
| 54 | 54 |
osClient := osclient.NewOrDie(&kclient.Config{Host: server.URL})
|
| 55 | 55 |
|
| 56 |
- storage := map[string]apiserver.RESTStorage{
|
|
| 56 |
+ storage := map[string]rest.Storage{
|
|
| 57 | 57 |
"templateConfigs": templateregistry.NewREST(), |
| 58 | 58 |
} |
| 59 | 59 |
|
| ... | ... |
@@ -138,9 +138,9 @@ func CreateServiceForPod(pod *kapi.Pod, ns string) *kapi.Service {
|
| 138 | 138 |
Name: ns, |
| 139 | 139 |
}, |
| 140 | 140 |
Spec: kapi.ServiceSpec{
|
| 141 |
- Selector: map[string]string{"name": pod.Name},
|
|
| 142 |
- ContainerPort: kubeutil.IntOrString{Kind: kubeutil.IntstrInt, IntVal: 8080},
|
|
| 143 |
- Port: 8080, |
|
| 141 |
+ Selector: map[string]string{"name": pod.Name},
|
|
| 142 |
+ TargetPort: kubeutil.IntOrString{Kind: kubeutil.IntstrInt, IntVal: 8080},
|
|
| 143 |
+ Port: 8080, |
|
| 144 | 144 |
}, |
| 145 | 145 |
} |
| 146 | 146 |
if service, err := client.Services(ns).Create(service); err != nil {
|