You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2017/01/03 19:28:18 UTC
[08/13] incubator-trafficcontrol git commit: provides the ability to
pull all deliveryservices assigned to a user
provides the ability to pull all deliveryservices assigned to a user
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/ac45172f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/ac45172f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/ac45172f
Branch: refs/heads/master
Commit: ac45172fc07d5ecc00792b71bec64899700bf6da
Parents: 0c066ab
Author: Jeremy Mitchell <mi...@gmail.com>
Authored: Thu Dec 29 12:33:37 2016 -0700
Committer: Jeremy Mitchell <mi...@gmail.com>
Committed: Thu Dec 29 12:33:37 2016 -0700
----------------------------------------------------------------------
.../development/traffic_ops_api/v12/user.rst | 231 +++++++++++++++++++
traffic_ops/app/lib/API/Deliveryservice.pm | 75 ++++++
traffic_ops/app/lib/TrafficOpsRoutes.pm | 5 +-
3 files changed, 310 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/ac45172f/docs/source/development/traffic_ops_api/v12/user.rst
----------------------------------------------------------------------
diff --git a/docs/source/development/traffic_ops_api/v12/user.rst b/docs/source/development/traffic_ops_api/v12/user.rst
index bbe0278..b141eca 100644
--- a/docs/source/development/traffic_ops_api/v12/user.rst
+++ b/docs/source/development/traffic_ops_api/v12/user.rst
@@ -208,6 +208,237 @@ Users
|
+**GET /api/1.2/users/:id/deliveryservices**
+
+ Retrieves all delivery services assigned to the user. See also `Using Traffic Ops - Delivery Service <http://trafficcontrol.apache.org/docs/latest/admin/traffic_ops_using.html#delivery-service>`_.
+
+ Authentication Required: Yes
+
+ Role(s) Required: None
+
+ **Request Route Parameters**
+
+ +-----------------+----------+---------------------------------------------------+
+ | Name | Required | Description |
+ +=================+==========+===================================================+
+ | ``id`` | yes | User ID. |
+ +-----------------+----------+---------------------------------------------------+
+
+
+ **Response Properties**
+
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | Parameter | Type | Description |
+ +==========================+========+======================================================================================================================================+
+ | ``active`` | bool | true if active, false if inactive. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``cacheurl`` | string | Cache URL rule to apply to this delivery service. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``ccrDnsTtl`` | string | The TTL of the DNS response for A or AAAA queries requesting the IP address of the tr. host. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``cdnId`` | string | Id of the CDN to which the delivery service belongs to. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``cdnName`` | string | Name of the CDN to which the delivery service belongs to. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``checkPath`` | string | The path portion of the URL to check this deliveryservice for health. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``displayName`` | string | The display name of the delivery service. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``dnsBypassIp`` | string | The IPv4 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the |
+ | | | globalMaxMbps traffic on this deliveryservice. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``dnsBypassIp6`` | string | The IPv6 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the |
+ | | | globalMaxMbps traffic on this deliveryservice. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``dnsBypassTtl`` | string | The TTL of the DNS bypass response. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``dscp`` | string | The Differentiated Services Code Point (DSCP) with which to mark downstream (EDGE -> customer) traffic. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``edgeHeaderRewrite`` | string | The EDGE header rewrite actions to perform. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``geoLimitRedirectUrl`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``geoLimit`` | string | - 0: None - no limitations |
+ | | | - 1: Only route on CZF file hit |
+ | | | - 2: Only route on CZF hit or when from USA |
+ | | | |
+ | | | Note that this does not prevent access to content or makes content secure; it just prevents |
+ | | | routing to the content by Traffic Router. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``geoLimitCountries`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``geoProvider`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``globalMaxMbps`` | string | The maximum global bandwidth allowed on this deliveryservice. If exceeded, the traffic routes to the |
+ | | | dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for HTTP deliveryservices. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``globalMaxTps`` | string | The maximum global transactions per second allowed on this deliveryservice. When this is exceeded |
+ | | | traffic will be sent to the dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for |
+ | | | HTTP deliveryservices |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``httpBypassFqdn`` | string | The HTTP destination to use for bypass on an HTTP deliveryservice - bypass starts when serving more than the |
+ | | | globalMaxMbps traffic on this deliveryservice. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``id`` | string | The deliveryservice id (database row number). |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``infoUrl`` | string | Use this to add a URL that points to more information about that deliveryservice. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``initialDispersion`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``ipv6RoutingEnabled`` | bool | false: send IPv4 address of Traffic Router to client on HTTP type del. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``lastUpdated`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``logsEnabled`` | bool | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``longDesc`` | string | Description field 1. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``longDesc1`` | string | Description field 2. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``longDesc2`` | string | Description field 2. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``>>type`` | string | The type of MatchList (one of :ref:to-api-v11-types use_in_table='regex'). |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``>>setNumber`` | string | The set Number of the matchList. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``>>pattern`` | string | The regexp for the matchList. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``maxDnsAnswers`` | string | The maximum number of IPs to put in a A/AAAA response for a DNS deliveryservice (0 means all |
+ | | | available). |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``midHeaderRewrite`` | string | The MID header rewrite actions to perform. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``missLat`` | string | The latitude to use when the client cannot be found in the CZF or the Geo lookup. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``missLong`` | string | The longitude to use when the client cannot be found in the CZF or the Geo lookup. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``multiSiteOrigin`` | bool | Is the Multi Site Origin feature enabled for this delivery service (0=false, 1=true). See :ref:`rl-multi-site-origin` |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``multiSiteOriginAlgor`` | bool | Is the Multi Site Origin feature enabled for this delivery service (0=false, 1=true). See :ref:`rl-multi-site-origin` |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``orgServerFqdn`` | string | The origin server base URL (FQDN when used in this instance, includes the |
+ | | | protocol (http:// or https://) for use in retrieving content from the origin server. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``originShield`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``profileDescription`` | string | The description of the Traffic Router Profile with which this deliveryservice is associated. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``profileId`` | string | The id of the Traffic Router Profile with which this deliveryservice is associated. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``profileName`` | string | The name of the Traffic Router Profile with which this deliveryservice is associated. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``protocol`` | string | - 0: serve with http:// at EDGE |
+ | | | - 1: serve with https:// at EDGE |
+ | | | - 2: serve with both http:// and https:// at EDGE |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``qstringIgnore`` | string | - 0: no special query string handling; it is for use in the cache-key and pass up to origin. |
+ | | | - 1: ignore query string in cache-key, but pass it up to parent and or origin. |
+ | | | - 2: drop query string at edge, and do not use it in the cache-key. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``rangeRequestHandling`` | string | How to treat range requests: |
+ | | | |
+ | | | - 0 Do not cache (ranges requested from files taht are already cached due to a non range request will be a HIT) |
+ | | | - 1 Use the `background_fetch <https://docs.trafficserver.apache.org/en/latest/reference/plugins/background_fetch.en.html>`_ plugin. |
+ | | | - 2 Use the cache_range_requests plugin. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``regexRemap`` | string | Regex Remap rule to apply to this delivery service at the Edge tier. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``regionalGeoBlocking`` | bool | Regex Remap rule to apply to this delivery service at the Edge tier. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``remapText`` | string | Additional raw remap line text. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``signed`` | bool | - false: token based auth (see :ref:token-based-auth) is not enabled for this deliveryservice. |
+ | | | - true: token based auth is enabled for this deliveryservice. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``sslKeyVersion`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``trRequestHeaders`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``trResponseHeaders`` | string | |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``type`` | string | The type of this deliveryservice (one of :ref:to-api-v11-types use_in_table='deliveryservice'). |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``typeId`` | string | The type of this deliveryservice (one of :ref:to-api-v11-types use_in_table='deliveryservice'). |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+ | ``xmlId`` | string | Unique string that describes this deliveryservice. |
+ +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
+
+ **Response Example** ::
+
+ {
+ "response": [
+ {
+ "active": true,
+ "cacheurl": null,
+ "ccrDnsTtl": "3600",
+ "cdnId": "2",
+ "cdnName": "over-the-top",
+ "checkPath": "",
+ "displayName": "My Cool Delivery Service",
+ "dnsBypassCname": "",
+ "dnsBypassIp": "",
+ "dnsBypassIp6": "",
+ "dnsBypassTtl": "30",
+ "dscp": "40",
+ "edgeHeaderRewrite": null,
+ "exampleURLs": [
+ "http://edge.foo-ds.foo.bar.net"
+ ],
+ "geoLimit": "0",
+ "geoLimitCountries": null,
+ "geoLimitRedirectURL": null,
+ "geoProvider": "0",
+ "globalMaxMbps": null,
+ "globalMaxTps": "0",
+ "httpBypassFqdn": "",
+ "id": "442",
+ "infoUrl": "",
+ "initialDispersion": "1",
+ "ipv6RoutingEnabled": true,
+ "lastUpdated": "2016-01-26 08:49:35",
+ "logsEnabled": false,
+ "longDesc": "",
+ "longDesc1": "",
+ "longDesc2": "",
+ "matchList": [
+ {
+ "pattern": ".*\\.foo-ds\\..*",
+ "setNumber": "0",
+ "type": "HOST_REGEXP"
+ }
+ ],
+ "maxDnsAnswers": "0",
+ "midHeaderRewrite": null,
+ "missLat": "41.881944",
+ "missLong": "-87.627778",
+ "multiSiteOrigin": false,
+ "multiSiteOriginAlgorithm": null,
+ "orgServerFqdn": "http://baz.boo.net",
+ "originShield": null,
+ "profileDescription": "Content Router for over-the-top",
+ "profileId": "5",
+ "profileName": "ROUTER_TOP",
+ "protocol": "0",
+ "qstringIgnore": "1",
+ "rangeRequestHandling": "0",
+ "regexRemap": null,
+ "regionalGeoBlocking": false,
+ "remapText": null,
+ "signed": false,
+ "sslKeyVersion": "0",
+ "trRequestHeaders": null,
+ "trResponseHeaders": "Access-Control-Allow-Origin: *",
+ "type": "HTTP",
+ "typeId": "8",
+ "xmlId": "foo-ds"
+ }
+ { .. },
+ { .. }
+ ]
+ }
+
+|
+
**GET /api/1.2/user/current.json**
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/ac45172f/traffic_ops/app/lib/API/Deliveryservice.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/Deliveryservice.pm b/traffic_ops/app/lib/API/Deliveryservice.pm
index 99054a3..6653b29 100644
--- a/traffic_ops/app/lib/API/Deliveryservice.pm
+++ b/traffic_ops/app/lib/API/Deliveryservice.pm
@@ -613,6 +613,81 @@ sub get_deliveryservices_by_serverId {
return $self->success( \@data );
}
+sub get_deliveryservices_by_userId {
+ my $self = shift;
+ my $user_id = $self->param('id');
+
+ my $user_ds_ids = $self->db->resultset('DeliveryserviceTmuser')->search( { tm_user_id => $user_id } );
+
+ my $deliveryservices = $self->db->resultset('Deliveryservice')->search(
+ { 'me.id' => { -in => $user_ds_ids->get_column('deliveryservice')->as_query } }
+ );
+
+ my @data;
+ if ( defined($deliveryservices) ) {
+ while ( my $row = $deliveryservices->next ) {
+ push(
+ @data, {
+ "active" => \$row->active,
+ "cacheurl" => $row->cacheurl,
+ "ccrDnsTtl" => $row->ccr_dns_ttl,
+ "cdnId" => $row->cdn->id,
+ "cdnName" => $row->cdn->name,
+ "checkPath" => $row->check_path,
+ "displayName" => $row->display_name,
+ "dnsBypassCname" => $row->dns_bypass_cname,
+ "dnsBypassIp" => $row->dns_bypass_ip,
+ "dnsBypassIp6" => $row->dns_bypass_ip6,
+ "dnsBypassTtl" => $row->dns_bypass_ttl,
+ "dscp" => $row->dscp,
+ "edgeHeaderRewrite" => $row->edge_header_rewrite,
+ "geoLimitRedirectURL" => $row->geolimit_redirect_url,
+ "geoLimit" => $row->geo_limit,
+ "geoLimitCountries" => $row->geo_limit_countries,
+ "geoProvider" => $row->geo_provider,
+ "globalMaxMbps" => $row->global_max_mbps,
+ "globalMaxTps" => $row->global_max_tps,
+ "httpBypassFqdn" => $row->http_bypass_fqdn,
+ "id" => $row->id,
+ "infoUrl" => $row->info_url,
+ "initialDispersion" => $row->initial_dispersion,
+ "ipv6RoutingEnabled" => \$row->ipv6_routing_enabled,
+ "lastUpdated" => $row->last_updated,
+ "logsEnabled" => \$row->logs_enabled,
+ "longDesc" => $row->long_desc,
+ "longDesc1" => $row->long_desc_1,
+ "longDesc2" => $row->long_desc_2,
+ "maxDnsAnswers" => $row->max_dns_answers,
+ "midHeaderRewrite" => $row->mid_header_rewrite,
+ "missLat" => $row->miss_lat,
+ "missLong" => $row->miss_long,
+ "multiSiteOrigin" => \$row->multi_site_origin,
+ "multiSiteOriginAlgorithm" => $row->multi_site_origin_algorithm,
+ "orgServerFqdn" => $row->org_server_fqdn,
+ "originShield" => $row->origin_shield,
+ "profileId" => $row->profile->id,
+ "profileName" => $row->profile->name,
+ "profileDescription" => $row->profile->description,
+ "protocol" => $row->protocol,
+ "qstringIgnore" => $row->qstring_ignore,
+ "rangeRequestHandling" => $row->range_request_handling,
+ "regexRemap" => $row->regex_remap,
+ "regionalGeoBlocking" => \$row->regional_geo_blocking,
+ "remapText" => $row->remap_text,
+ "signed" => \$row->signed,
+ "sslKeyVersion" => $row->ssl_key_version,
+ "trRequestHeaders" => $row->tr_request_headers,
+ "trResponseHeaders" => $row->tr_response_headers,
+ "type" => $row->type->name,
+ "typeId" => $row->type->id,
+ "xmlId" => $row->xml_id
+ }
+ );
+ }
+ }
+
+ return $self->success( \@data );
+}
sub routing {
my $self = shift;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/ac45172f/traffic_ops/app/lib/TrafficOpsRoutes.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/TrafficOpsRoutes.pm b/traffic_ops/app/lib/TrafficOpsRoutes.pm
index 9fc7d09..53725c4 100644
--- a/traffic_ops/app/lib/TrafficOpsRoutes.pm
+++ b/traffic_ops/app/lib/TrafficOpsRoutes.pm
@@ -704,7 +704,10 @@ sub api_routes {
$r->get( "/api/$version/users/:id" => [ id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'User#show', namespace => $namespace );
$r->put("/api/$version/users/:id")->over( authenticated => 1 )->to( 'User#update', namespace => $namespace );
- # -- USERS: CURRENT USER
+ # get all deliveryservices assigned to a user (from deliveryservice_tmuser table)
+ $r->get( "/api/$version/users/:id/deliveryservices")->over( authenticated => 1 )->to( 'Deliveryservice#get_deliveryservices_by_userId', namespace => $namespace );
+
+ # -- USERS: CURRENT USER
$r->get("/api/$version/user/current")->over( authenticated => 1 )->to( 'User#current', namespace => $namespace );
$r->post("/api/$version/user/current/update")->over( authenticated => 1 )->to( 'User#update_current', namespace => $namespace );