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 );