Merge pull request #937 in YUNIONIO/onecloud from ~QIUJIAN/onecloud:hotfix/qj-update-vendor-20190116 to release/2.5.0

* commit '305baf5d5f08b00b5aa744f77d63fb63a42f80f7':
  update vendor
This commit is contained in:
李泽玺
2019-01-16 18:06:58 +08:00
5 changed files with 24 additions and 12 deletions
Generated
+6 -6
View File
@@ -1615,11 +1615,11 @@
[[projects]]
branch = "master"
digest = "1:9e1972be6a76a8ef37aebcf94dedbe0508274464b5091baff4a8780583affebb"
digest = "1:9a92b34083e218c123d21a4b0d74228df6b186de9dcd6489e5b4cf68f4e90104"
name = "yunion.io/x/jsonutils"
packages = ["."]
pruneopts = "UT"
revision = "c191216583f759c3d54a1d1d84c9832fdee68596"
revision = "c40afc81cccc4618168f722c64deba7cfbb1f8bd"
[[projects]]
branch = "master"
@@ -1634,7 +1634,7 @@
[[projects]]
branch = "master"
digest = "1:c6edf85623ec3a8c5e688dafbdc5bbde1d6057b9d0d9b78e6cb6dd84a52b23c0"
digest = "1:f7e6b859716c65473233390b3c69c919d0d6c2d9bd25ee599c29d0e8e3419d35"
name = "yunion.io/x/pkg"
packages = [
"gotypes",
@@ -1667,15 +1667,15 @@
"utils",
]
pruneopts = "UT"
revision = "9075712a1c3ff8c0bad1c413e18f0b7f2c18f29c"
revision = "4d8dfcd77e8817d5dc37eacf4b6b098429c7d259"
[[projects]]
branch = "master"
digest = "1:82629c6aeecc1e6e3ea7108385aaac2bdcceeba8f8dc3175daca256602e3be71"
digest = "1:b885ec8656c1175dbaa7f27add70d85e4e53b99122293a945734732c3e57604b"
name = "yunion.io/x/sqlchemy"
packages = ["."]
pruneopts = "UT"
revision = "c2445071ddf7b3f2a22ccdd3be684b67ac2f9008"
revision = "cd413404bb8e78699df15a08e7f94a14835c6f1c"
[[projects]]
branch = "master"
+1
View File
@@ -9,6 +9,7 @@ var (
"storages",
"wires",
"vpcs",
"networks",
"cloudregions",
"recyclebins",
"schedtags",
+1 -1
View File
@@ -459,7 +459,7 @@ func (this *JSONDict) unmarshalMap(val reflect.Value) error {
}
func (this *JSONDict) unmarshalStruct(val reflect.Value) error {
fieldValues := reflectutils.FetchStructFieldValueSet(val)
fieldValues := reflectutils.FetchStructFieldValueSetForWrite(val)
for k, v := range this.data {
fieldValue, find := fieldValues.GetValue(k)
if find {
+15 -4
View File
@@ -82,10 +82,14 @@ type SStructFieldValue struct {
type SStructFieldValueSet []SStructFieldValue
func FetchStructFieldValueSet(dataValue reflect.Value) SStructFieldValueSet {
return fetchStructFieldValueSet(dataValue)
return fetchStructFieldValueSet(dataValue, false)
}
func fetchStructFieldValueSet(dataValue reflect.Value) SStructFieldValueSet {
func FetchStructFieldValueSetForWrite(dataValue reflect.Value) SStructFieldValueSet {
return fetchStructFieldValueSet(dataValue, true)
}
func fetchStructFieldValueSet(dataValue reflect.Value, allocatePtr bool) SStructFieldValueSet {
fields := SStructFieldValueSet{}
dataType := dataValue.Type()
for i := 0; i < dataType.NumField(); i += 1 {
@@ -103,9 +107,16 @@ func fetchStructFieldValueSet(dataValue reflect.Value) SStructFieldValueSet {
// T, *T
switch fv.Kind() {
case reflect.Ptr, reflect.Interface:
if !fv.IsValid() || fv.IsNil() {
if !fv.IsValid() {
continue
}
if fv.IsNil() {
if fv.Kind() == reflect.Ptr && allocatePtr {
fv.Set(reflect.New(fv.Type().Elem()))
} else {
continue
}
}
fv = fv.Elem()
}
// note that we regard anonymous interface field the
@@ -113,7 +124,7 @@ func fetchStructFieldValueSet(dataValue reflect.Value) SStructFieldValueSet {
// different from how encoding/json handles struct
// field of interface type.
if fv.Kind() == reflect.Struct && sf.Type != gotypes.TimeType {
subfields := fetchStructFieldValueSet(fv)
subfields := fetchStructFieldValueSet(fv, allocatePtr)
fields = append(fields, subfields...)
continue
}
+1 -1
View File
@@ -86,7 +86,7 @@ func parsePortString(ps string) (int, error) {
func MustParseSecurityRule(s string) *SecurityRule {
r, err := ParseSecurityRule(s)
if err != nil {
msg := fmt.Sprintf("parse security rule %q: %s", s, err)
msg := fmt.Sprintf("parse security rule %q: %v", s, err)
panic(msg)
}
return r