diff --git a/doc/release-notes.md b/doc/release-notes.md index a0523bfe5..206553696 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,9 +1,16 @@ +# Release 0.14.2 +## Theme +Ziti 0.14.2 includes the following: + + * [can't create service policy with @ identity name](https://github.com/netfoundry/ziti-cmd/issues/93) + * Fixes to connection setup timing + # Release 0.14.1 ## Theme Ziti 0.14.1 includes the following: ### Features - * [Enable graceful shutdown of bound connections]https://github.com/netfoundry/ziti-edge/issues/149 + * [Enable graceful shutdown of bound connections](https://github.com/netfoundry/ziti-edge/issues/149) ### Fixes * [Enrollments w/ 0 length bodies cause enrollment errors](https://github.com/netfoundry/ziti-edge/issues/150) @@ -1769,4 +1776,4 @@ Errors where there is the potential to report about multiple invalid field value "apiVersion": "0.0.1" } } -``` \ No newline at end of file +``` diff --git a/go.mod b/go.mod index b35345510..750c21a22 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ go 1.14 // replace github.com/netfoundry/ziti-sdk-golang => ../ziti-sdk-golang -// replace github.com/netfoundry/ziti-edge => ../ziti-edge +replace github.com/netfoundry/ziti-edge => ../ziti-edge require ( github.com/Jeffail/gabs v1.4.0 @@ -26,9 +26,9 @@ require ( github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19 github.com/michaelquigley/pfxlog v0.0.0-20190813191113-2be43bd0dccc github.com/netfoundry/ziti-edge v0.14.8 - github.com/netfoundry/ziti-fabric v0.11.29 - github.com/netfoundry/ziti-foundation v0.9.15 - github.com/netfoundry/ziti-sdk-golang v0.11.30 + github.com/netfoundry/ziti-fabric v0.11.31 + github.com/netfoundry/ziti-foundation v0.9.17 + github.com/netfoundry/ziti-sdk-golang v0.11.33 github.com/pborman/uuid v1.2.0 github.com/pkg/errors v0.9.1 github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 diff --git a/go.sum b/go.sum index dab6943fa..00fa28911 100644 --- a/go.sum +++ b/go.sum @@ -230,10 +230,21 @@ github.com/netfoundry/ziti-edge v0.14.8 h1:u4jSKkJ6T6gKmyFWlsRMjsNOuaeOPThH2WvVB github.com/netfoundry/ziti-edge v0.14.8/go.mod h1:KUPJljPUWx0OAXSJzZU+0RS6jTG/R+5McxSRO0+/Sak= github.com/netfoundry/ziti-fabric v0.11.29 h1:cB53VvdL06gyGxs3qOEWV+ATMY3ThSaMSyn2xalXdhs= github.com/netfoundry/ziti-fabric v0.11.29/go.mod h1:SQil5oz1SQgawDm3B4RpJdYQEVc7j8ddLoaocP2Z6gA= +github.com/netfoundry/ziti-fabric v0.11.30 h1:Vf9mLMe/rZmyT7iKQlHytBnHBBPIfiV6ORtp/xqENnY= +github.com/netfoundry/ziti-fabric v0.11.30/go.mod h1:CejdO9bamBIGbs4wopAUYRu5NcffgjcgFJZrs8FXVeM= +github.com/netfoundry/ziti-fabric v0.11.31 h1:otjhKFvxBLJUDP06lHnDOsHwkvVDp3xdhKK/EQyb+Ek= +github.com/netfoundry/ziti-fabric v0.11.31/go.mod h1:OkTL8ftDbnWv9BBOGZB5cfOGUOwHz3VF9+dyxBJhHfo= github.com/netfoundry/ziti-foundation v0.9.15 h1:ouP2kJrft+b60JPzoFapWjZJVGdJhkzKOCdxKjmPhDU= github.com/netfoundry/ziti-foundation v0.9.15/go.mod h1:s4O2kYpHcFzeMpS2hkNfD6W7Ce3RhsLw30Ruj4kBRu4= +github.com/netfoundry/ziti-foundation v0.9.16/go.mod h1:s4O2kYpHcFzeMpS2hkNfD6W7Ce3RhsLw30Ruj4kBRu4= +github.com/netfoundry/ziti-foundation v0.9.17 h1:cBI8oeeZLbZad4nCUe/fjad02h5es4tjbAA9qJID1Bs= +github.com/netfoundry/ziti-foundation v0.9.17/go.mod h1:s4O2kYpHcFzeMpS2hkNfD6W7Ce3RhsLw30Ruj4kBRu4= github.com/netfoundry/ziti-sdk-golang v0.11.30 h1:FCg9i1O6GPt7vwOu0fMm0ySV8dicN/s8ITy3ZXwJx9k= github.com/netfoundry/ziti-sdk-golang v0.11.30/go.mod h1:MLXmTe6ldP1S3EL/kA3E3ZLOANIWHHE1sn0mMHcoRzQ= +github.com/netfoundry/ziti-sdk-golang v0.11.32 h1:DQIsqeNSQciv1ccPy4Lj/oT29muSsNgQkkHUxSEEpN8= +github.com/netfoundry/ziti-sdk-golang v0.11.32/go.mod h1:eyKab+nOpFMIN4gg8YED+/tpbarEnkqd4VRHatSHGNs= +github.com/netfoundry/ziti-sdk-golang v0.11.33 h1:QZHYmS8lpOjGwVHlkRHo4Flxs4muNJwDPTl6kI2GQsQ= +github.com/netfoundry/ziti-sdk-golang v0.11.33/go.mod h1:5NHKKY44BPh7BVCYBYpqqEHUUE8Tuaka1xJx+p0HQ90= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.0 h1:0ir4pc6v8/PJ0yw5AEtMddfXpWBXg9cnG7SgSoJuCgY= github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w= diff --git a/ziti/cmd/ziti/cmd/edge_controller/common.go b/ziti/cmd/ziti/cmd/edge_controller/common.go index 3ea7d451e..dcabc2ff0 100644 --- a/ziti/cmd/ziti/cmd/edge_controller/common.go +++ b/ziti/cmd/ziti/cmd/edge_controller/common.go @@ -24,21 +24,22 @@ import ( ) func mapNameToID(entityType string, val string) (string, error) { - // If we can parse it as a UUID, treat it as such - _, err := uuid.Parse(val) - if err == nil { + list, _, err := filterEntitiesOfType(entityType, fmt.Sprintf("id=\"%s\"", val), false, nil) + if err != nil { + return "", err + } + + if len(list) > 0 { return val, nil } - // Allow UUID formatted names to be recognized with a name: prefix - name := strings.TrimPrefix(val, "name:") - list, _, err := filterEntitiesOfType(entityType, fmt.Sprintf("name=\"%s\"", name), false, nil) + list, _, err = filterEntitiesOfType(entityType, fmt.Sprintf("name=\"%s\"", val), false, nil) if err != nil { return "", err } if len(list) < 1 { - return "", errors.Errorf("no %v found for name %v", entityType, val) + return "", errors.Errorf("no %v found with id or name %v", entityType, val) } if len(list) > 1 { diff --git a/ziti/cmd/ziti/cmd/edge_controller/create_edge_router_policy.go b/ziti/cmd/ziti/cmd/edge_controller/create_edge_router_policy.go index 392cd65f4..930df44af 100644 --- a/ziti/cmd/ziti/cmd/edge_controller/create_edge_router_policy.go +++ b/ziti/cmd/ziti/cmd/edge_controller/create_edge_router_policy.go @@ -66,11 +66,20 @@ func newCreateEdgeRouterPolicyCmd(f cmdutil.Factory, out io.Writer, errOut io.Wr // runCreateEdgeRouterPolicy create a new edgeRouterPolicy on the Ziti Edge Controller func runCreateEdgeRouterPolicy(o *createEdgeRouterPolicyOptions) error { + edgeRouterRoles, err := convertNamesToIds(o.edgeRouterRoles, "edge-routers") + if err != nil { + return err + } + + identityRoles, err := convertNamesToIds(o.identityRoles, "identities") + if err != nil { + return err + } entityData := gabs.New() setJSONValue(entityData, o.Args[0], "name") - setJSONValue(entityData, o.edgeRouterRoles, "edgeRouterRoles") - setJSONValue(entityData, o.identityRoles, "identityRoles") + setJSONValue(entityData, edgeRouterRoles, "edgeRouterRoles") + setJSONValue(entityData, identityRoles, "identityRoles") result, err := createEntityOfType("edge-router-policies", entityData.String(), &o.commonOptions) if err != nil { diff --git a/ziti/cmd/ziti/cmd/edge_controller/create_service_edge_router_policy.go b/ziti/cmd/ziti/cmd/edge_controller/create_service_edge_router_policy.go index 2ad761178..64e6bbf9d 100644 --- a/ziti/cmd/ziti/cmd/edge_controller/create_service_edge_router_policy.go +++ b/ziti/cmd/ziti/cmd/edge_controller/create_service_edge_router_policy.go @@ -66,11 +66,19 @@ func newCreateServiceEdgeRouterPolicyCmd(f cmdutil.Factory, out io.Writer, errOu // runCreateServiceEdgeRouterPolicy create a new edgeRouterPolicy on the Ziti Edge Controller func runCreateServiceEdgeRouterPolicy(o *createServiceEdgeRouterPolicyOptions) error { + edgeRouterRoles, err := convertNamesToIds(o.edgeRouterRoles, "edge-routers") + if err != nil { + return err + } + serviceRoles, err := convertNamesToIds(o.serviceRoles, "identities") + if err != nil { + return err + } entityData := gabs.New() setJSONValue(entityData, o.Args[0], "name") - setJSONValue(entityData, o.edgeRouterRoles, "edgeRouterRoles") - setJSONValue(entityData, o.serviceRoles, "serviceRoles") + setJSONValue(entityData, edgeRouterRoles, "edgeRouterRoles") + setJSONValue(entityData, serviceRoles, "serviceRoles") result, err := createEntityOfType("service-edge-router-policies", entityData.String(), &o.commonOptions) if err != nil { diff --git a/ziti/cmd/ziti/cmd/edge_controller/create_service_policy.go b/ziti/cmd/ziti/cmd/edge_controller/create_service_policy.go index 83c69e702..57382c484 100644 --- a/ziti/cmd/ziti/cmd/edge_controller/create_service_policy.go +++ b/ziti/cmd/ziti/cmd/edge_controller/create_service_policy.go @@ -19,6 +19,7 @@ package edge_controller import ( "fmt" "io" + "strings" "github.com/pkg/errors" @@ -73,11 +74,21 @@ func runCreateServicePolicy(o *createServicePolicyOptions) error { return errors.Errorf("Invalid policy type '%v'. Valid values: [Bind, Dial]", policyType) } + serviceRoles, err := convertNamesToIds(o.serviceRoles, "services") + if err != nil { + return err + } + + identityRoles, err := convertNamesToIds(o.identityRoles, "identities") + if err != nil { + return err + } + entityData := gabs.New() setJSONValue(entityData, o.Args[0], "name") setJSONValue(entityData, o.Args[1], "type") - setJSONValue(entityData, o.serviceRoles, "serviceRoles") - setJSONValue(entityData, o.identityRoles, "identityRoles") + setJSONValue(entityData, serviceRoles, "serviceRoles") + setJSONValue(entityData, identityRoles, "identityRoles") result, err := createEntityOfType("service-policies", entityData.String(), &o.commonOptions) if err != nil { @@ -92,3 +103,20 @@ func runCreateServicePolicy(o *createServicePolicyOptions) error { return err } + +func convertNamesToIds(roles []string, entityType string) ([]string, error) { + var result []string + for _, val := range roles { + if strings.HasPrefix(val, "@") { + idOrName := strings.TrimPrefix(val, "@") + id, err := mapNameToID(entityType, idOrName) + if err != nil { + return nil, err + } + result = append(result, "@"+id) + } else { + result = append(result, val) + } + } + return result, nil +}