Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AmendsenProject
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Shaik Janipasha
AmendsenProject
Commits
bdb50e39
Commit
bdb50e39
authored
May 10, 2019
by
Verdan Mahmood
Committed by
Tao Feng
May 10, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implements a new method to handle the request headers method (#143)
parent
d34022c3
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
74 additions
and
90 deletions
+74
-90
v0.py
amundsen_application/api/metadata/v0.py
+12
-73
v0.py
amundsen_application/api/search/v0.py
+2
-7
request_utils.py
amundsen_application/api/utils/request_utils.py
+50
-0
v0.py
amundsen_application/api/v0.py
+2
-8
config.py
amundsen_application/config.py
+7
-1
setup.py
setup.py
+1
-1
No files found.
amundsen_application/api/metadata/v0.py
View file @
bdb50e39
...
...
@@ -11,12 +11,11 @@ from amundsen_application.log.action_log import action_logging
from
amundsen_application.models.user
import
load_user
,
dump_user
from
amundsen_application.api.utils.request_utils
import
get_query_param
,
request_
wrapper
from
amundsen_application.api.utils.request_utils
import
get_query_param
,
request_
metadata
LOGGER
=
logging
.
getLogger
(
__name__
)
REQUEST_SESSION_TIMEOUT_SEC
=
3
metadata_blueprint
=
Blueprint
(
'metadata'
,
__name__
,
url_prefix
=
'/api/metadata/v0'
)
...
...
@@ -69,13 +68,7 @@ def popular_tables() -> Response:
try
:
url
=
app
.
config
[
'METADATASERVICE_BASE'
]
+
POPULAR_TABLES_ENDPOINT
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -121,14 +114,6 @@ def get_table_metadata() -> Response:
return
make_response
(
jsonify
({
'tableData'
:
{},
'msg'
:
message
}),
HTTPStatus
.
INTERNAL_SERVER_ERROR
)
def
_send_metadata_get_request
(
url
:
str
)
->
Response
:
return
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
def
_get_partition_data
(
watermarks
:
Dict
)
->
Dict
:
if
watermarks
:
high_watermark
=
next
(
filter
(
lambda
x
:
x
[
'watermark_type'
]
==
'high_watermark'
,
watermarks
))
...
...
@@ -157,7 +142,7 @@ def _get_table_metadata(*, table_key: str, index: int, source: str) -> Dict[str,
try
:
table_endpoint
=
_get_table_endpoint
()
url
=
'{0}/{1}'
.
format
(
table_endpoint
,
table_key
)
response
=
_send_metadata_get_request
(
url
)
response
=
request_metadata
(
url
=
url
)
except
ValueError
as
e
:
# envoy client BadResponse is a subclass of ValueError
message
=
'Encountered exception: '
+
str
(
e
)
...
...
@@ -235,12 +220,7 @@ def _update_table_owner(*, table_key: str, method: str, owner: str) -> Dict[str,
try
:
table_endpoint
=
_get_table_endpoint
()
url
=
'{0}/{1}/owner/{2}'
.
format
(
table_endpoint
,
table_key
,
owner
)
request_wrapper
(
method
=
method
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
request_metadata
(
url
=
url
,
method
=
method
)
# TODO: Figure out a way to get this payload from flask.jsonify which wraps with app's response_class
return
{
'msg'
:
'Updated owner'
}
...
...
@@ -273,12 +253,7 @@ def get_last_indexed() -> Response:
try
:
url
=
app
.
config
[
'METADATASERVICE_BASE'
]
+
LAST_INDEXED_ENDPOINT
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -303,12 +278,7 @@ def get_table_description() -> Response:
url
=
'{0}/{1}/description'
.
format
(
table_endpoint
,
table_key
)
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -335,12 +305,7 @@ def get_column_description() -> Response:
url
=
'{0}/{1}/column/{2}/description'
.
format
(
table_endpoint
,
table_key
,
column_name
)
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -377,12 +342,7 @@ def put_table_description() -> Response:
url
=
'{0}/{1}/description/{2}'
.
format
(
table_endpoint
,
table_key
,
description
)
_log_put_table_description
(
table_key
=
table_key
,
description
=
description
,
source
=
src
)
response
=
request_wrapper
(
method
=
'PUT'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
,
method
=
'PUT'
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -419,12 +379,7 @@ def put_column_description() -> Response:
url
=
'{0}/{1}/column/{2}/description/{3}'
.
format
(
table_endpoint
,
table_key
,
column_name
,
description
)
_log_put_column_description
(
table_key
=
table_key
,
column_name
=
column_name
,
description
=
description
,
source
=
src
)
response
=
request_wrapper
(
method
=
'PUT'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
,
method
=
'PUT'
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -449,13 +404,7 @@ def get_tags() -> Response:
"""
try
:
url
=
app
.
config
[
'METADATASERVICE_BASE'
]
+
TAGS_ENDPOINT
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -495,12 +444,7 @@ def update_table_tags() -> Response:
_log_update_table_tags
(
table_key
=
table_key
,
method
=
method
,
tag
=
tag
)
response
=
request_wrapper
(
method
=
method
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
,
method
=
method
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
@@ -531,12 +475,7 @@ def get_user() -> Response:
_log_get_user
(
user_id
=
user_id
)
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
amundsen_application/api/search/v0.py
View file @
bdb50e39
...
...
@@ -9,7 +9,7 @@ from flask import current_app as app
from
flask.blueprints
import
Blueprint
from
amundsen_application.log.action_log
import
action_logging
from
amundsen_application.api.utils.request_utils
import
get_query_param
,
request_
wrapper
from
amundsen_application.api.utils.request_utils
import
get_query_param
,
request_
search
LOGGER
=
logging
.
getLogger
(
__name__
)
...
...
@@ -197,12 +197,7 @@ def _search_table(*, search_term: str, page_index: int) -> Dict[str, Any]:
search_term
,
page_index
)
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'SEARCHSERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'SEARCHSERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_search
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
...
...
amundsen_application/api/utils/request_utils.py
View file @
bdb50e39
from
typing
import
Dict
import
requests
from
flask
import
current_app
as
app
REQUEST_SESSION_TIMEOUT_SEC
=
3
def
get_query_param
(
args
:
Dict
,
param
:
str
,
error_msg
:
str
=
None
)
->
str
:
...
...
@@ -10,6 +14,52 @@ def get_query_param(args: Dict, param: str, error_msg: str = None) -> str:
return
value
def
request_metadata
(
*
,
# type: ignore
url
:
str
,
method
:
str
=
'GET'
,
timeout_sec
:
int
=
REQUEST_SESSION_TIMEOUT_SEC
):
"""
Helper function to make a request to metadata service.
Sets the client and header information based on the configuration
:param method: DELETE | GET | POST | PUT
:param url: The request URL
:param timeout_sec: Number of seconds before timeout is triggered.
:return:
"""
if
app
.
config
[
'REQUEST_HEADERS_METHOD'
]:
headers
=
app
.
config
[
'REQUEST_HEADERS_METHOD'
](
app
)
else
:
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
]
return
request_wrapper
(
method
=
method
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
headers
,
timeout_sec
=
timeout_sec
)
def
request_search
(
*
,
# type: ignore
url
:
str
,
method
:
str
=
'GET'
,
timeout_sec
:
int
=
REQUEST_SESSION_TIMEOUT_SEC
):
"""
Helper function to make a request to search service.
Sets the client and header information based on the configuration
:param method: DELETE | GET | POST | PUT
:param url: The request URL
:param timeout_sec: Number of seconds before timeout is triggered.
:return:
"""
if
app
.
config
[
'REQUEST_HEADERS_METHOD'
]:
headers
=
app
.
config
[
'REQUEST_HEADERS_METHOD'
](
app
)
else
:
headers
=
app
.
config
[
'SEARCHSERVICE_REQUEST_HEADERS'
]
return
request_wrapper
(
method
=
method
,
url
=
url
,
client
=
app
.
config
[
'SEARCHSERVICE_REQUEST_CLIENT'
],
headers
=
headers
,
timeout_sec
=
timeout_sec
)
# TODO: Define an interface for envoy_client
def
request_wrapper
(
method
:
str
,
url
:
str
,
client
,
headers
,
timeout_sec
:
int
):
# type: ignore
"""
...
...
amundsen_application/api/v0.py
View file @
bdb50e39
...
...
@@ -7,10 +7,9 @@ from flask import current_app as app
from
flask.blueprints
import
Blueprint
from
amundsen_application.api.metadata.v0
import
USER_ENDPOINT
from
amundsen_application.api.utils.request_utils
import
request_
wrapper
from
amundsen_application.api.utils.request_utils
import
request_
metadata
from
amundsen_application.models.user
import
load_user
,
dump_user
REQUEST_SESSION_TIMEOUT_SEC
=
3
LOGGER
=
logging
.
getLogger
(
__name__
)
...
...
@@ -27,12 +26,7 @@ def current_user() -> Response:
url
=
'{0}{1}/{2}'
.
format
(
app
.
config
[
'METADATASERVICE_BASE'
],
USER_ENDPOINT
,
user
.
user_id
)
response
=
request_wrapper
(
method
=
'GET'
,
url
=
url
,
client
=
app
.
config
[
'METADATASERVICE_REQUEST_CLIENT'
],
headers
=
app
.
config
[
'METADATASERVICE_REQUEST_HEADERS'
],
timeout_sec
=
REQUEST_SESSION_TIMEOUT_SEC
)
response
=
request_metadata
(
url
=
url
)
status_code
=
response
.
status_code
if
status_code
==
HTTPStatus
.
OK
:
message
=
'Success'
...
...
amundsen_application/config.py
View file @
bdb50e39
...
...
@@ -44,6 +44,12 @@ class LocalConfig(Config):
PORT
=
METADATA_PORT
)
)
# If specified, will be used to generate headers for service-to-service communication
# Please note that if specified, this will ignore following config properties:
# 1. METADATASERVICE_REQUEST_HEADERS
# 2. SEARCHSERVICE_REQUEST_HEADERS
REQUEST_HEADERS_METHOD
=
None
AUTH_USER_METHOD
=
None
GET_PROFILE_URL
=
None
...
...
setup.py
View file @
bdb50e39
...
...
@@ -34,7 +34,7 @@ requirements_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'r
with
open
(
requirements_path
)
as
requirements_file
:
requirements
=
requirements_file
.
readlines
()
__version__
=
'1.0.
2
'
__version__
=
'1.0.
3
'
setup
(
...
...
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