Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
fe8d0d27
Unverified
Commit
fe8d0d27
authored
Oct 10, 2019
by
Arve Knudsen
Committed by
GitHub
Oct 10, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pkg/components: Check errors (#19703)
* pkg/components: Check errors
parent
9b483e76
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
104 additions
and
53 deletions
+104
-53
pkg/components/dashdiffs/formatter_json.go
+38
-10
pkg/components/imguploader/azureblobuploader.go
+12
-4
pkg/components/imguploader/gcsuploader_test.go
+2
-1
pkg/components/imguploader/imguploader_test.go
+48
-35
pkg/components/imguploader/s3uploader_test.go
+4
-3
No files found.
pkg/components/dashdiffs/formatter_json.go
View file @
fe8d0d27
...
...
@@ -141,9 +141,13 @@ type AsciiLine struct {
func
(
f
*
JSONFormatter
)
Format
(
diff
diff
.
Diff
)
(
result
string
,
err
error
)
{
if
v
,
ok
:=
f
.
left
.
(
map
[
string
]
interface
{});
ok
{
f
.
formatObject
(
v
,
diff
)
if
err
:=
f
.
formatObject
(
v
,
diff
);
err
!=
nil
{
return
""
,
err
}
}
else
if
v
,
ok
:=
f
.
left
.
([]
interface
{});
ok
{
f
.
formatArray
(
v
,
diff
)
if
err
:=
f
.
formatArray
(
v
,
diff
);
err
!=
nil
{
return
""
,
err
}
}
else
{
return
""
,
fmt
.
Errorf
(
"expected map[string]interface{} or []interface{}, got %T"
,
f
.
left
)
...
...
@@ -155,29 +159,43 @@ func (f *JSONFormatter) Format(diff diff.Diff) (result string, err error) {
fmt
.
Printf
(
"%v
\n
"
,
err
)
return
""
,
err
}
return
b
.
String
(),
nil
}
func
(
f
*
JSONFormatter
)
formatObject
(
left
map
[
string
]
interface
{},
df
diff
.
Diff
)
{
func
(
f
*
JSONFormatter
)
formatObject
(
left
map
[
string
]
interface
{},
df
diff
.
Diff
)
error
{
f
.
addLineWith
(
ChangeNil
,
"{"
)
f
.
push
(
"ROOT"
,
len
(
left
),
false
)
f
.
processObject
(
left
,
df
.
Deltas
())
if
err
:=
f
.
processObject
(
left
,
df
.
Deltas
());
err
!=
nil
{
f
.
pop
()
return
err
}
f
.
pop
()
f
.
addLineWith
(
ChangeNil
,
"}"
)
return
nil
}
func
(
f
*
JSONFormatter
)
formatArray
(
left
[]
interface
{},
df
diff
.
Diff
)
{
func
(
f
*
JSONFormatter
)
formatArray
(
left
[]
interface
{},
df
diff
.
Diff
)
error
{
f
.
addLineWith
(
ChangeNil
,
"["
)
f
.
push
(
"ROOT"
,
len
(
left
),
true
)
f
.
processArray
(
left
,
df
.
Deltas
())
if
err
:=
f
.
processArray
(
left
,
df
.
Deltas
());
err
!=
nil
{
f
.
pop
()
return
err
}
f
.
pop
()
f
.
addLineWith
(
ChangeNil
,
"]"
)
return
nil
}
func
(
f
*
JSONFormatter
)
processArray
(
array
[]
interface
{},
deltas
[]
diff
.
Delta
)
error
{
patchedIndex
:=
0
for
index
,
value
:=
range
array
{
f
.
processItem
(
value
,
deltas
,
diff
.
Index
(
index
))
if
err
:=
f
.
processItem
(
value
,
deltas
,
diff
.
Index
(
index
));
err
!=
nil
{
return
err
}
patchedIndex
++
}
...
...
@@ -201,7 +219,9 @@ func (f *JSONFormatter) processObject(object map[string]interface{}, deltas []di
names
:=
sortKeys
(
object
)
for
_
,
name
:=
range
names
{
value
:=
object
[
name
]
f
.
processItem
(
value
,
deltas
,
diff
.
Name
(
name
))
if
err
:=
f
.
processItem
(
value
,
deltas
,
diff
.
Name
(
name
));
err
!=
nil
{
return
err
}
}
// Added
...
...
@@ -236,7 +256,11 @@ func (f *JSONFormatter) processItem(value interface{}, deltas []diff.Delta, posi
f
.
print
(
"{"
)
f
.
closeLine
()
f
.
push
(
positionStr
,
len
(
o
),
false
)
f
.
processObject
(
o
,
matchedDelta
.
Deltas
)
if
err
:=
f
.
processObject
(
o
,
matchedDelta
.
Deltas
);
err
!=
nil
{
f
.
pop
()
return
err
}
f
.
pop
()
f
.
newLine
(
ChangeNil
)
f
.
print
(
"}"
)
...
...
@@ -257,7 +281,11 @@ func (f *JSONFormatter) processItem(value interface{}, deltas []diff.Delta, posi
f
.
print
(
"["
)
f
.
closeLine
()
f
.
push
(
positionStr
,
len
(
a
),
true
)
f
.
processArray
(
a
,
matchedDelta
.
Deltas
)
if
err
:=
f
.
processArray
(
a
,
matchedDelta
.
Deltas
);
err
!=
nil
{
f
.
pop
()
return
err
}
f
.
pop
()
f
.
newLine
(
ChangeNil
)
f
.
print
(
"]"
)
...
...
pkg/components/imguploader/azureblobuploader.go
View file @
fe8d0d27
...
...
@@ -162,7 +162,9 @@ func (c *StorageClient) FileUpload(container, blobName string, body io.Reader) (
extension
:=
strings
.
ToLower
(
path
.
Ext
(
blobName
))
contentType
:=
mime
.
TypeByExtension
(
extension
)
buf
:=
new
(
bytes
.
Buffer
)
buf
.
ReadFrom
(
body
)
if
_
,
err
:=
buf
.
ReadFrom
(
body
);
err
!=
nil
{
return
nil
,
err
}
req
,
err
:=
http
.
NewRequest
(
"PUT"
,
c
.
absUrl
(
"%s/%s"
,
container
,
blobName
),
...
...
@@ -181,7 +183,9 @@ func (c *StorageClient) FileUpload(container, blobName string, body io.Reader) (
"Content-Length"
:
strconv
.
Itoa
(
buf
.
Len
()),
})
c
.
Auth
.
SignRequest
(
req
)
if
err
:=
c
.
Auth
.
SignRequest
(
req
);
err
!=
nil
{
return
nil
,
err
}
return
c
.
transport
()
.
RoundTrip
(
req
)
}
...
...
@@ -201,7 +205,7 @@ type Auth struct {
Key
string
}
func
(
a
*
Auth
)
SignRequest
(
req
*
http
.
Request
)
{
func
(
a
*
Auth
)
SignRequest
(
req
*
http
.
Request
)
error
{
strToSign
:=
fmt
.
Sprintf
(
"%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s
\n
%s"
,
strings
.
ToUpper
(
req
.
Method
),
tryget
(
req
.
Header
,
"Content-Encoding"
),
...
...
@@ -221,13 +225,17 @@ func (a *Auth) SignRequest(req *http.Request) {
decodedKey
,
_
:=
base64
.
StdEncoding
.
DecodeString
(
a
.
Key
)
sha256
:=
hmac
.
New
(
sha256
.
New
,
decodedKey
)
sha256
.
Write
([]
byte
(
strToSign
))
if
_
,
err
:=
sha256
.
Write
([]
byte
(
strToSign
));
err
!=
nil
{
return
err
}
signature
:=
base64
.
StdEncoding
.
EncodeToString
(
sha256
.
Sum
(
nil
))
copyHeadersToRequest
(
req
,
map
[
string
]
string
{
"Authorization"
:
fmt
.
Sprintf
(
"SharedKey %s:%s"
,
a
.
Account
,
signature
),
})
return
nil
}
func
tryget
(
headers
map
[
string
][]
string
,
key
string
)
string
{
...
...
pkg/components/imguploader/gcsuploader_test.go
View file @
fe8d0d27
...
...
@@ -11,9 +11,10 @@ import (
func
TestUploadToGCS
(
t
*
testing
.
T
)
{
SkipConvey
(
"[Integration test] for external_image_store.gcs"
,
t
,
func
()
{
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
gcsUploader
,
_
:=
NewImageUploader
()
...
...
pkg/components/imguploader/imguploader_test.go
View file @
fe8d0d27
...
...
@@ -12,24 +12,27 @@ func TestImageUploaderFactory(t *testing.T) {
Convey
(
"Can create image uploader for "
,
t
,
func
()
{
Convey
(
"S3ImageUploader config"
,
func
()
{
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
setting
.
ImageUploadProvider
=
"s3"
Convey
(
"with bucket url https://foo.bar.baz.s3-us-east-2.amazonaws.com"
,
func
()
{
s3sec
,
err
:=
setting
.
Raw
.
GetSection
(
"external_image_storage.s3"
)
So
(
err
,
ShouldBeNil
)
s3sec
.
NewKey
(
"bucket_url"
,
"https://foo.bar.baz.s3-us-east-2.amazonaws.com"
)
s3sec
.
NewKey
(
"access_key"
,
"access_key"
)
s3sec
.
NewKey
(
"secret_key"
,
"secret_key"
)
_
,
err
=
s3sec
.
NewKey
(
"bucket_url"
,
"https://foo.bar.baz.s3-us-east-2.amazonaws.com"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
s3sec
.
NewKey
(
"access_key"
,
"access_key"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
s3sec
.
NewKey
(
"secret_key"
,
"secret_key"
)
So
(
err
,
ShouldBeNil
)
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
original
,
ok
:=
uploader
.
(
*
S3Uploader
)
original
,
ok
:=
uploader
.
(
*
S3Uploader
)
So
(
ok
,
ShouldBeTrue
)
So
(
original
.
region
,
ShouldEqual
,
"us-east-2"
)
So
(
original
.
bucket
,
ShouldEqual
,
"foo.bar.baz"
)
...
...
@@ -40,15 +43,17 @@ func TestImageUploaderFactory(t *testing.T) {
Convey
(
"with bucket url https://s3.amazonaws.com/mybucket"
,
func
()
{
s3sec
,
err
:=
setting
.
Raw
.
GetSection
(
"external_image_storage.s3"
)
So
(
err
,
ShouldBeNil
)
s3sec
.
NewKey
(
"bucket_url"
,
"https://s3.amazonaws.com/my.bucket.com"
)
s3sec
.
NewKey
(
"access_key"
,
"access_key"
)
s3sec
.
NewKey
(
"secret_key"
,
"secret_key"
)
_
,
err
=
s3sec
.
NewKey
(
"bucket_url"
,
"https://s3.amazonaws.com/my.bucket.com"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
s3sec
.
NewKey
(
"access_key"
,
"access_key"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
s3sec
.
NewKey
(
"secret_key"
,
"secret_key"
)
So
(
err
,
ShouldBeNil
)
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
original
,
ok
:=
uploader
.
(
*
S3Uploader
)
original
,
ok
:=
uploader
.
(
*
S3Uploader
)
So
(
ok
,
ShouldBeTrue
)
So
(
original
.
region
,
ShouldEqual
,
"us-east-1"
)
So
(
original
.
bucket
,
ShouldEqual
,
"my.bucket.com"
)
...
...
@@ -59,9 +64,12 @@ func TestImageUploaderFactory(t *testing.T) {
Convey
(
"with bucket url https://s3-us-west-2.amazonaws.com/mybucket"
,
func
()
{
s3sec
,
err
:=
setting
.
Raw
.
GetSection
(
"external_image_storage.s3"
)
So
(
err
,
ShouldBeNil
)
s3sec
.
NewKey
(
"bucket_url"
,
"https://s3-us-west-2.amazonaws.com/my.bucket.com"
)
s3sec
.
NewKey
(
"access_key"
,
"access_key"
)
s3sec
.
NewKey
(
"secret_key"
,
"secret_key"
)
_
,
err
=
s3sec
.
NewKey
(
"bucket_url"
,
"https://s3-us-west-2.amazonaws.com/my.bucket.com"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
s3sec
.
NewKey
(
"access_key"
,
"access_key"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
s3sec
.
NewKey
(
"secret_key"
,
"secret_key"
)
So
(
err
,
ShouldBeNil
)
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
...
...
@@ -76,23 +84,24 @@ func TestImageUploaderFactory(t *testing.T) {
})
Convey
(
"Webdav uploader"
,
func
()
{
var
err
error
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
setting
.
ImageUploadProvider
=
"webdav"
webdavSec
,
err
:=
cfg
.
Raw
.
GetSection
(
"external_image_storage.webdav"
)
So
(
err
,
ShouldBeNil
)
webdavSec
.
NewKey
(
"url"
,
"webdavUrl"
)
webdavSec
.
NewKey
(
"username"
,
"username"
)
webdavSec
.
NewKey
(
"password"
,
"password"
)
_
,
err
=
webdavSec
.
NewKey
(
"url"
,
"webdavUrl"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
webdavSec
.
NewKey
(
"username"
,
"username"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
webdavSec
.
NewKey
(
"password"
,
"password"
)
So
(
err
,
ShouldBeNil
)
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
original
,
ok
:=
uploader
.
(
*
WebdavUploader
)
...
...
@@ -103,19 +112,20 @@ func TestImageUploaderFactory(t *testing.T) {
})
Convey
(
"GCS uploader"
,
func
()
{
var
err
error
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
setting
.
ImageUploadProvider
=
"gcs"
gcpSec
,
err
:=
cfg
.
Raw
.
GetSection
(
"external_image_storage.gcs"
)
So
(
err
,
ShouldBeNil
)
gcpSec
.
NewKey
(
"key_file"
,
"/etc/secrets/project-79a52befa3f6.json"
)
gcpSec
.
NewKey
(
"bucket"
,
"project-grafana-east"
)
_
,
err
=
gcpSec
.
NewKey
(
"key_file"
,
"/etc/secrets/project-79a52befa3f6.json"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
gcpSec
.
NewKey
(
"bucket"
,
"project-grafana-east"
)
So
(
err
,
ShouldBeNil
)
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
...
...
@@ -128,17 +138,22 @@ func TestImageUploaderFactory(t *testing.T) {
Convey
(
"AzureBlobUploader config"
,
func
()
{
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
setting
.
ImageUploadProvider
=
"azure_blob"
Convey
(
"with container name"
,
func
()
{
azureBlobSec
,
err
:=
cfg
.
Raw
.
GetSection
(
"external_image_storage.azure_blob"
)
So
(
err
,
ShouldBeNil
)
azureBlobSec
.
NewKey
(
"account_name"
,
"account_name"
)
azureBlobSec
.
NewKey
(
"account_key"
,
"account_key"
)
azureBlobSec
.
NewKey
(
"container_name"
,
"container_name"
)
_
,
err
=
azureBlobSec
.
NewKey
(
"account_name"
,
"account_name"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
azureBlobSec
.
NewKey
(
"account_key"
,
"account_key"
)
So
(
err
,
ShouldBeNil
)
_
,
err
=
azureBlobSec
.
NewKey
(
"container_name"
,
"container_name"
)
So
(
err
,
ShouldBeNil
)
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
...
...
@@ -152,20 +167,18 @@ func TestImageUploaderFactory(t *testing.T) {
})
Convey
(
"Local uploader"
,
func
()
{
var
err
error
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
setting
.
ImageUploadProvider
=
"local"
uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
original
,
ok
:=
uploader
.
(
*
LocalUploader
)
original
,
ok
:=
uploader
.
(
*
LocalUploader
)
So
(
ok
,
ShouldBeTrue
)
So
(
original
,
ShouldNotBeNil
)
})
...
...
pkg/components/imguploader/s3uploader_test.go
View file @
fe8d0d27
...
...
@@ -11,14 +11,15 @@ import (
func
TestUploadToS3
(
t
*
testing
.
T
)
{
SkipConvey
(
"[Integration test] for external_image_store.s3"
,
t
,
func
()
{
cfg
:=
setting
.
NewCfg
()
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
err
:=
cfg
.
Load
(
&
setting
.
CommandLineArgs
{
HomePath
:
"../../../"
,
})
So
(
err
,
ShouldBeNil
)
s3Uploader
,
_
:=
NewImageUploader
()
s3Uploader
,
err
:=
NewImageUploader
()
So
(
err
,
ShouldBeNil
)
path
,
err
:=
s3Uploader
.
Upload
(
context
.
Background
(),
"../../../public/img/logo_transparent_400x.png"
)
So
(
err
,
ShouldBeNil
)
So
(
path
,
ShouldNotEqual
,
""
)
})
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment