Jeff Bradberry
eb10a1873d
Drop objects that cannot be read or do not have a natural key
...
don't fail hard.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
ab15349c8c
Remove the NoNaturalKey error
...
It's too awkward, and it makes more sense to return None instead.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
e053a58223
Handle some more bad cases when doing OPTIONS calls
...
- deprecated endpoints
- read-only endpoints
- insufficient privileges
The latter case currently just drops it on the floor, but ought to do
something better.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
4262dd38ba
Change the NoNaturalKey exception to no longer derive from Common
...
which seems to be entirely use for response exceptions. Maybe rename
Common?
2020-06-09 13:54:05 -04:00
Jeff Bradberry
0deacc4391
If attempting to link to a resource that is not yet complete, wait
2020-06-09 13:54:05 -04:00
Jeff Bradberry
329293dbf0
Tentatively enable inventory sources
2020-06-09 13:54:05 -04:00
Jeff Bradberry
e92c8cfdcc
Remove the natural key lookup dict and make each Page responsible instead
2020-06-09 13:54:05 -04:00
Jeff Bradberry
07ba521b8b
Enable schedules
2020-06-09 13:54:05 -04:00
Jeff Bradberry
972d3ab535
Export full related objects under some conditions
2020-06-09 13:54:05 -04:00
Jeff Bradberry
a1f7d0b781
Fix a bug with inventory.variables
...
Using Page[key] instead of Page.json[key] causes inner json blob
strings to automatically get parsed, which is not what we want with
this field.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
30a3e3e172
Deal with lack of permissions
2020-06-09 13:54:05 -04:00
Jeff Bradberry
01d575f833
Enable the remaining top-level exportable resources
...
and rearrange the import/export methods a bit.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
e0f6af4700
Enable the export of several relation field types
2020-06-09 13:54:05 -04:00
Jeff Bradberry
3860c7597f
Move the import logic into methods on the ApiV2 class
2020-06-09 13:54:05 -04:00
Jeff Bradberry
e4146e9bc7
Move the export logic onto methods on the ApiV2 class
...
making it easier to invoke programmatically.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
19c92a7055
Enable notification templates
2020-06-09 13:54:05 -04:00
Jeff Bradberry
6a9add4fe3
Deal somewhat reasonably with missing fields as part of the natural key
...
- JobTemplate.organization has recently been added, we need to support
with and without
- WorkflowJobTemplateNode is shortly going to get an identifier field,
and we will need to support both with and without
2020-06-09 13:54:05 -04:00
Jeff Bradberry
ad574eb896
Enable credential export
2020-06-09 13:54:05 -04:00
Jeff Bradberry
55f79a4569
Fix a couple of flaws
...
- The dependency ordering may spit out page types that weren't in the import data set. Make sure to be able to map those to resources anyway.
- freeze() needs to be able to deal with nullable foreign keys.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
d20fa03034
Create new Import.dependent_resources method
...
that yields up resource names, even ones that aren't explicitly in the
import data, in dependency order.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
868aafb263
Filter out managed credential types
...
since we cannot patch them upon import.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
3f204659a8
Temporarily disable export of resources that may not work yet
2020-06-09 13:54:05 -04:00
Jeff Bradberry
ea5b810e87
Sort the asset groups to be imported by their dependency relationships
2020-06-09 13:54:04 -04:00
Jeff Bradberry
2c00d42ced
Only use a default password if an import user doesn't already exist
2020-06-09 13:54:04 -04:00
Jeff Bradberry
d191edcaf1
Fix a Python 2 syntax error
...
it doesn't like multiple **kwargs, apparently.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
65e16dc7ae
Get and assign the related objects
2020-06-09 13:54:04 -04:00
Jeff Bradberry
95b22bf05b
Begin to deal with existing matching assets
...
by using a registry allowing the lookup of Page objects by (frozen)
natural keys.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
21e36ad19a
Add the calculated natural key to the export data for each asset
2020-06-09 13:54:04 -04:00
Jeff Bradberry
f53920d3bf
Begin changing Import to work with the structure created by Export
2020-06-09 13:54:04 -04:00
Jeff Bradberry
372570ce8e
Extract out get_natural_key as a standalone function
2020-06-09 13:54:04 -04:00
Jeff Bradberry
6f28361bf5
Make serialize_asset use Pages to a greater extent
2020-06-09 13:54:04 -04:00
Jeff Bradberry
0877e5305c
Modify get_natural_key to work on Pages
2020-06-09 13:54:04 -04:00
Jeff Bradberry
e4383c505f
Make more use of the functionality of Page in get_assets
...
and related methods. Also, rename get_resource_options -> get_options
and enhance_asset -> serialize_asset.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
fb066eb52e
Fold the other methods doing API calls into get_assets()
2020-06-09 13:54:04 -04:00
Jeff Bradberry
6162ff0439
Start to record the role membership
...
but not really, since it still isn't fully capturing the role content_object
2020-06-09 13:54:04 -04:00
Jeff Bradberry
dfe34563aa
Resolve the natural keys of assets we've already collected
2020-06-09 13:54:04 -04:00
Jeff Bradberry
37cbf7691b
Split out separate methods for the OPTIONS call and massaging each asset dict
2020-06-09 13:54:04 -04:00
Jeff Bradberry
9280198b0f
Use a list of exportable resources to build up the parser
...
Also, handle an implicit export of everything.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
2127f3c96d
Add organizations as a resource type to export
2020-06-09 13:54:04 -04:00
Jeff Bradberry
9f7fecf8da
Add basic import command
2020-06-09 13:54:04 -04:00
Jeff Bradberry
c1a07ff00b
Limit export output to only those fields needed to create the resource
2020-06-09 13:54:04 -04:00
Jeff Bradberry
f21d6b1fc4
Actually query the API for the user or users requested
2020-06-09 13:54:04 -04:00
Jeff Bradberry
4312395a3a
Normalize the requested resource into a pk
...
using the pk_or_name helper function. Also, authenticate to the API.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
c1f6fec532
Add skeleton of a custom 'export' resource
...
This only takes a flag for users at the moment, and does nothing in
particular with it.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
ced8f42835
Force worker processes to have a different signal handler from the parent
...
Situations have come up where the 5+ minute kill signal for
run_task_manager is emitted to the worker process running it, but
since the worker improperly inherited the AWXConsumerBase().stop()
handler a deadlock ultimately was triggered on the database
connection.
2020-06-04 15:41:28 -04:00
Jeff Bradberry
6b3befcb94
Optionally add the webhook_credential link to related
...
on JTs and WFJTs.
2020-03-26 16:07:14 -04:00
Jeff Bradberry
91135f638f
Add a connection kwarg to Page.from_json
...
if you don't reuse the connection when doing this, you lose your
authentication.
2020-03-24 15:27:51 -04:00
Jeff Bradberry
e3ea4e2398
Register the resource copy endpoints as awxkit page types
2020-03-23 15:19:48 -04:00
Jeff Bradberry
e4e2d48f53
Register some missing related endpoints in awxkit
...
- the newer varieties of notification templates
- organization workflow job templates
- credential owner users and owner teams
this allows the endpoints to get wrapped in appropriate Page types,
not just the Base page type.
2020-03-23 15:18:47 -04:00
Jeff Bradberry
1e48d773ae
Add job_templates to the set of related endpoints for organizations
2020-03-23 14:33:40 -04:00
Jeff Bradberry
d849e81891
Show API choice field metadata more correctly for null vs ''
2020-03-05 17:10:59 -05:00
Jeff Bradberry
d0bec97bbb
Adjust the logic that renders fields with choices on an API Options call
...
accounting for the case where blank or null is allowed.
Refs #5099
2020-02-24 10:17:38 -05:00
Jeff Bradberry
aff31ac02f
Add the no_truncate parameter to the job and adhoc event sublist views
...
which are the ones that the CLI actually uses.
2019-10-29 11:24:17 -04:00
Jeff Bradberry
b48815d2bb
Add the no_truncate parameter to the job and adhoc event sublist views
...
which are the ones that the CLI actually uses.
2019-10-28 12:51:14 -04:00
Jeff Bradberry
cf89108edf
Force the CLI to use no_truncate for the monitor calls
2019-10-14 11:21:11 -04:00
Jeff Bradberry
e672e68a02
Allow the job event list views to take a no_truncate GET param
2019-10-11 17:18:36 -04:00
Jeff Bradberry
9efa7b84df
Depend on a serializer context variable no_truncate
...
to decide whether to turn off the ANSI control sequence-aware
truncation, instead of needing inappropriate awareness of the details
of the view that invoked the serializer. This will also allow us to
have views that can more flexibly turn off the truncation under other
circumstances.
2019-10-10 16:08:17 -04:00
Jeff Bradberry
a803cedd7c
Break out a new reusable truncate_stdout utility function
2019-10-10 16:07:08 -04:00
Jeff Bradberry
1122d28a1b
Quote the playbook passed to runner from the isolated manager
2019-10-02 11:10:19 -04:00
Jeff Bradberry
d549877ebd
Check for the existance of a UnifiedJobTemplate with the same webhook GUID
...
instead of trying (incorrectly) to be specific about the JT/WFJT type.
2019-09-30 15:26:49 -04:00
Jeff Bradberry
204c05aa3b
Change the webhook post-back payload to use the job UI url
2019-09-30 13:32:23 -04:00
Jeff Bradberry
ac34b24868
Post the job or workflow url to the webhook service as part of the status
2019-09-30 13:32:23 -04:00
Jeff Bradberry
ffe89820e3
Return to using ContentType.kind
...
which is _not_ the `kind` attribute being deprecated.
2019-09-30 13:32:23 -04:00
Jeff Bradberry
062c4908c9
Modify the webhook debounce logic
...
to check if we've already previously run a job with the same webhook
GUID plus template id. This will allow organizations to write
multiple JT/WFJTs to handle the same set of webhook events.
2019-09-30 13:32:23 -04:00
Jeff Bradberry
b6b70e55fb
Address a variety of small review issues
2019-09-30 13:32:23 -04:00
Jeff Bradberry
6aa6471b7c
Add help_text to the new fields
2019-09-30 13:32:23 -04:00
Jeff Bradberry
e14d4ddec6
Add a doc template to the webhook key API view
2019-09-30 13:32:23 -04:00
Jeff Bradberry
df24f5d28f
Add a new launch_type of 'webhook'
2019-09-30 13:32:23 -04:00
Jeff Bradberry
fea7f914d2
Avoid the use of CredentialType.kind
2019-09-30 13:32:23 -04:00
Jeff Bradberry
a4873d97d8
Raise a validation error if a credential is set while the service is not
2019-09-30 13:32:22 -04:00
Jeff Bradberry
efe4ea6575
Fix the webhook receiver url for workflow jobs
2019-09-30 13:32:22 -04:00
Jeff Bradberry
b415c31b4f
Fix problems with posting to Gitlab's API
2019-09-30 13:32:22 -04:00
Jeff Bradberry
e91462d085
Update the Webhook Credential help text tooltip
...
to make it more apparent to the user that this is an optional part of
the feature, and that failure to add a webhook credential will disable
status post-backs.
2019-09-30 13:32:22 -04:00
Jeff Bradberry
885841caea
Drop Bitbucket support
...
since only the Bitbucket Server product supports signed payloads,
bitbucket.org does not. And we are requiring signed payloads.
2019-09-30 13:32:22 -04:00
Jeff Bradberry
286da3a7eb
Posting webhook status now works
2019-09-30 13:32:21 -04:00
Jeff Bradberry
40b03eb6ef
Enable the call to update_webhook_status
...
by calling it directly within send_notification_templates. Also,
update the context field in the payload to be either 'ansible/awx' or
'ansible/tower', depending on which is being used.
2019-09-30 13:32:21 -04:00
Jeff Bradberry
c76c531b7a
Provide a payload for the webhook status post-back
2019-09-30 13:32:21 -04:00
Jeff Bradberry
4ad5054222
Add logic to post the job status for webhooks back to the service
...
under some circumstances.
2019-09-30 13:32:21 -04:00
Jeff Bradberry
aa34984d7c
Fix the git ref extractor for Gitlab pull requests
2019-09-30 13:32:21 -04:00
Jeff Bradberry
d73abda5d1
Update the webhook receiver git ref extractor logic
...
to deal with the null-ref case, and to deal correctly with Github push events.
2019-09-30 13:32:21 -04:00
Jeff Bradberry
e8e3a601b2
Pull out a git ref for each event type where we might care
2019-09-30 13:32:21 -04:00
Jeff Bradberry
178a2c7c49
Disable the authentication classes for the webhook receivers
...
One of them was consuming the body of the posts. We do still need to
have an extraneous `request.body` expression, though now in
WebhookReceiverBase.post, since the `request.data` expression in the
logging also consumes the request body.
2019-09-30 13:32:20 -04:00
Jeff Bradberry
58e5f02129
Expose the new webhook fields in the job and workflow serializers
2019-09-30 13:32:20 -04:00
Jeff Bradberry
dd6c97ed87
Include a message in the webhook response
2019-09-30 13:32:20 -04:00
Jeff Bradberry
7aa424b210
Make sure that the new webhook fields are populated when firing off a job
...
Also, added a temporary hacky workaround for the fact that something
in our request/response stack for APIView is consuming the request
contents in an unfriendly way, preventing the `.body` @property from
working.
2019-09-30 13:32:20 -04:00
Jeff Bradberry
ee1d118752
Add the webhook receiver url to the related urls in the serializers
2019-09-30 13:32:20 -04:00
Jeff Bradberry
245931f603
Debounce when multiple copies of the same webhook event come in
2019-09-30 13:26:04 -04:00
Jeff Bradberry
095aa77857
Create a new model mixin for Job and WorkflowJob webhook fields
2019-09-30 13:26:04 -04:00
Jeff Bradberry
bb1397a3d4
Validate the webhook credential
...
- we should allow a null credential, so that the admin can choose to configure not posting back status changes of the triggered job
- the credential must be of the new 'token' kind
- if we do configure a credential, its type must match the selected SCM service
2019-09-30 13:26:04 -04:00
Jeff Bradberry
5848f0360a
Update test_default_cred_types to include the new personal access token types
2019-09-30 13:26:04 -04:00
Jeff Bradberry
83fc2187cc
Fix the summary fields for webhook_credential
2019-09-30 13:26:04 -04:00
Jeff Bradberry
4dba9916dc
Add a new set of personal access token credential types
2019-09-30 13:26:03 -04:00
Jeff Bradberry
8836ed44ce
Construct an ID for Gitlab webhooks
...
by taking the SHA1 of the body of the webhook request.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
992c414737
Launch a Job or WorkflowJob based on the incoming webhook
2019-09-30 13:26:03 -04:00
Jeff Bradberry
66a8186995
Get the webhook receiver views to work at least minimally
2019-09-30 13:26:03 -04:00
Jeff Bradberry
fa15696ffe
Remove some dead comments
2019-09-30 13:26:03 -04:00
Jeff Bradberry
82a0dc0024
Cycle or unset the webhook key if the webhook service changes
...
Also, tests.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
d4b20b7340
Update tests to use the expect keyword argument for get() and post()
2019-09-30 13:26:03 -04:00
Jeff Bradberry
c0ad5a7768
Expose the webhook_service and webhook_credential fields in the serializer
...
webhook_credential specifically as a summary field.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
d9ac291115
Add some RBAC oriented tests for the webhook secret key view
2019-09-30 13:26:03 -04:00