Merge branch 'master' of github.com:Netflix/lemur into add-remove-certs-for-notification
This commit is contained in:
@ -60,8 +60,7 @@ class CertificatesListValid(AuthenticatedResource):
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
GET /certificates/valid?filter=cn;*.test.example.net&owner=joe@example.com&page=1&count=20
|
||||
HTTP/1.1
|
||||
GET /certificates/valid?filter=cn;*.test.example.net&owner=joe@example.com&page=1&count=20 HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
|
||||
|
@ -36,7 +36,7 @@ def get_friendly(dns_provider_id):
|
||||
Retrieves a dns provider by its lemur assigned ID.
|
||||
|
||||
:param dns_provider_id: Lemur assigned ID
|
||||
:rtype : DnsProvider
|
||||
:rtype: DnsProvider
|
||||
:return:
|
||||
"""
|
||||
dns_provider = get(dns_provider_id)
|
||||
|
@ -86,62 +86,79 @@ class DnsProvidersList(AuthenticatedResource):
|
||||
@admin_permission.require(http_exception=403)
|
||||
def post(self, data=None):
|
||||
"""
|
||||
Creates a DNS Provider
|
||||
.. http:post:: /dns_providers
|
||||
|
||||
**Example request**:
|
||||
{
|
||||
"providerType": {
|
||||
"name": "route53",
|
||||
"requirements": [
|
||||
{
|
||||
"name": "account_id",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"helpMessage": "AWS Account number",
|
||||
"value": 12345
|
||||
}
|
||||
],
|
||||
"route": "dns_provider_options",
|
||||
"reqParams": null,
|
||||
"restangularized": true,
|
||||
"fromServer": true,
|
||||
"parentResource": null,
|
||||
"restangularCollection": false
|
||||
},
|
||||
"name": "provider_name",
|
||||
"description": "provider_description"
|
||||
}
|
||||
Creates a DNS Provider
|
||||
|
||||
**Example request**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
POST /dns_providers HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
|
||||
{
|
||||
"providerType": {
|
||||
"name": "route53",
|
||||
"requirements": [
|
||||
{
|
||||
"name": "account_id",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"helpMessage": "AWS Account number",
|
||||
"value": 12345
|
||||
}
|
||||
],
|
||||
"route": "dns_provider_options",
|
||||
"reqParams": null,
|
||||
"restangularized": true,
|
||||
"fromServer": true,
|
||||
"parentResource": null,
|
||||
"restangularCollection": false
|
||||
},
|
||||
"name": "provider_name",
|
||||
"description": "provider_description"
|
||||
}
|
||||
|
||||
**Example request 2**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Vary: Accept
|
||||
Content-Type: text/javascript
|
||||
|
||||
{
|
||||
"providerType": {
|
||||
"name": "cloudflare",
|
||||
"requirements": [
|
||||
{
|
||||
"name": "email",
|
||||
"type": "str",
|
||||
"required": true,
|
||||
"helpMessage": "Cloudflare Email",
|
||||
"value": "test@example.com"
|
||||
},
|
||||
{
|
||||
"name": "key",
|
||||
"type": "str",
|
||||
"required": true,
|
||||
"helpMessage": "Cloudflare Key",
|
||||
"value": "secretkey"
|
||||
}
|
||||
],
|
||||
"route": "dns_provider_options",
|
||||
"reqParams": null,
|
||||
"restangularized": true,
|
||||
"fromServer": true,
|
||||
"parentResource": null,
|
||||
"restangularCollection": false
|
||||
},
|
||||
"name": "provider_name",
|
||||
"description": "provider_description"
|
||||
}
|
||||
|
||||
**Example request 2**
|
||||
{
|
||||
"providerType": {
|
||||
"name": "cloudflare",
|
||||
"requirements": [
|
||||
{
|
||||
"name": "email",
|
||||
"type": "str",
|
||||
"required": true,
|
||||
"helpMessage": "Cloudflare Email",
|
||||
"value": "test@example.com"
|
||||
},
|
||||
{
|
||||
"name": "key",
|
||||
"type": "str",
|
||||
"required": true,
|
||||
"helpMessage": "Cloudflare Key",
|
||||
"value": "secretkey"
|
||||
}
|
||||
],
|
||||
"route": "dns_provider_options",
|
||||
"reqParams": null,
|
||||
"restangularized": true,
|
||||
"fromServer": true,
|
||||
"parentResource": null,
|
||||
"restangularCollection": false
|
||||
},
|
||||
"name": "provider_name",
|
||||
"description": "provider_description"
|
||||
}
|
||||
:return:
|
||||
"""
|
||||
return service.create(data)
|
||||
|
@ -96,7 +96,7 @@ class DomainsList(AuthenticatedResource):
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
GET /domains HTTP/1.1
|
||||
POST /domains HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
|
||||
|
@ -93,11 +93,10 @@ def get_pending_certs(pending_ids):
|
||||
def create_certificate(pending_certificate, certificate, user):
|
||||
"""
|
||||
Create and store a certificate with pending certificate's info
|
||||
Args:
|
||||
pending_certificate: PendingCertificate which will populate the certificate
|
||||
certificate: dict from Authority, which contains the body, chain and external id
|
||||
user: User that called this function, used as 'creator' of the certificate if it does
|
||||
not have an owner
|
||||
|
||||
:arg pending_certificate: PendingCertificate which will populate the certificate
|
||||
:arg certificate: dict from Authority, which contains the body, chain and external id
|
||||
:arg user: User that called this function, used as 'creator' of the certificate if it does not have an owner
|
||||
"""
|
||||
certificate["owner"] = pending_certificate.owner
|
||||
data, errors = CertificateUploadInputSchema().load(certificate)
|
||||
@ -158,9 +157,9 @@ def cancel(pending_certificate, **kwargs):
|
||||
"""
|
||||
Cancel a pending certificate. A check should be done prior to this function to decide to
|
||||
revoke the certificate or just abort cancelling.
|
||||
Args:
|
||||
pending_certificate: PendingCertificate to be cancelled
|
||||
Returns: the pending certificate if successful, raises Exception if there was an issue
|
||||
|
||||
:arg pending_certificate: PendingCertificate to be cancelled
|
||||
:return: the pending certificate if successful, raises Exception if there was an issue
|
||||
"""
|
||||
plugin = plugins.get(pending_certificate.authority.plugin_name)
|
||||
plugin.cancel_ordered_certificate(pending_certificate, **kwargs)
|
||||
|
@ -221,7 +221,7 @@ class PendingCertificates(AuthenticatedResource):
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
PUT /pending certificates/1 HTTP/1.1
|
||||
PUT /pending_certificates/1 HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
Content-Type: application/json;charset=UTF-8
|
||||
@ -338,7 +338,7 @@ class PendingCertificates(AuthenticatedResource):
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
DELETE /pending certificates/1 HTTP/1.1
|
||||
DELETE /pending_certificates/1 HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
|
||||
|
@ -31,6 +31,11 @@ class ExportDestinationPlugin(DestinationPlugin):
|
||||
|
||||
@property
|
||||
def options(self):
|
||||
"""
|
||||
Gets/sets options for the plugin.
|
||||
|
||||
:return:
|
||||
"""
|
||||
return self.default_options + self.additional_options
|
||||
|
||||
def export(self, body, private_key, cert_chain, options):
|
||||
|
@ -57,6 +57,11 @@ class ExpirationNotificationPlugin(NotificationPlugin):
|
||||
|
||||
@property
|
||||
def options(self):
|
||||
"""
|
||||
Gets/sets options for the plugin.
|
||||
|
||||
:return:
|
||||
"""
|
||||
return self.default_options + self.additional_options
|
||||
|
||||
def send(self, notification_type, message, excluded_targets, options, **kwargs):
|
||||
|
@ -33,4 +33,9 @@ class SourcePlugin(Plugin):
|
||||
|
||||
@property
|
||||
def options(self):
|
||||
"""
|
||||
Gets/sets options for the plugin.
|
||||
|
||||
:return:
|
||||
"""
|
||||
return self.default_options + self.additional_options
|
||||
|
@ -71,7 +71,7 @@ class AcmeHandler(object):
|
||||
return False
|
||||
|
||||
def strip_wildcard(self, host):
|
||||
"""Removes the leading *. and returns Host and whether it was removed or not (True/False)"""
|
||||
"""Removes the leading wildcard and returns Host and whether it was removed or not (True/False)"""
|
||||
prefix = "*."
|
||||
if host.startswith(prefix):
|
||||
return host[len(prefix):], True
|
||||
|
@ -114,7 +114,7 @@ class RolesList(AuthenticatedResource):
|
||||
"username": null,
|
||||
"password": null,
|
||||
"users": [
|
||||
{'id': 1}
|
||||
{"id": 1}
|
||||
]
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ class RoleViewCredentials(AuthenticatedResource):
|
||||
Content-Type: text/javascript
|
||||
|
||||
{
|
||||
"username: "ausername",
|
||||
"username": "ausername",
|
||||
"password": "apassword"
|
||||
}
|
||||
|
||||
|
@ -255,7 +255,7 @@ def create(label, plugin_name, options, description=None):
|
||||
:param plugin_name:
|
||||
:param options:
|
||||
:param description:
|
||||
:rtype : Source
|
||||
:rtype: Source
|
||||
:return: New source
|
||||
"""
|
||||
source = Source(
|
||||
@ -273,7 +273,7 @@ def update(source_id, label, plugin_name, options, description):
|
||||
:param options:
|
||||
:param plugin_name:
|
||||
:param description:
|
||||
:rtype : Source
|
||||
:rtype: Source
|
||||
:return:
|
||||
"""
|
||||
source = get(source_id)
|
||||
@ -300,7 +300,7 @@ def get(source_id):
|
||||
Retrieves an source by its lemur assigned ID.
|
||||
|
||||
:param source_id: Lemur assigned ID
|
||||
:rtype : Source
|
||||
:rtype: Source
|
||||
:return:
|
||||
"""
|
||||
return database.get(Source, source_id)
|
||||
|
@ -49,7 +49,6 @@ angular.module('lemur')
|
||||
});
|
||||
});
|
||||
NotificationService.getCertificates(notification);
|
||||
$scope.page = 1;
|
||||
});
|
||||
|
||||
$scope.save = function (notification) {
|
||||
@ -77,10 +76,5 @@ angular.module('lemur')
|
||||
$uibModalInstance.dismiss('cancel');
|
||||
};
|
||||
|
||||
$scope.loadMoreCertificates = function () {
|
||||
$scope.page++;
|
||||
NotificationService.loadMoreCertificates($scope.notification, $scope.page);
|
||||
};
|
||||
|
||||
$scope.certificateService = CertificateService;
|
||||
});
|
||||
|
@ -62,7 +62,7 @@ angular.module('lemur')
|
||||
NotificationService.loadMoreCertificates = function (notification, page) {
|
||||
notification.getList('certificates', {page: page, showExpired: 0}).then(function (certificates) {
|
||||
_.each(certificates, function (certificate) {
|
||||
notification.certificates.push(certificate);
|
||||
notification.roles.push(certificate);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -101,7 +101,7 @@ class UsersList(AuthenticatedResource):
|
||||
|
||||
Creates a new user
|
||||
|
||||
**Example request**:
|
||||
**Example request with ID**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
@ -115,7 +115,25 @@ class UsersList(AuthenticatedResource):
|
||||
"email": "user3@example.com",
|
||||
"active": true,
|
||||
"roles": [
|
||||
{'id': 1} - or - {'name': 'myRole'}
|
||||
{"id": 1}
|
||||
]
|
||||
}
|
||||
|
||||
**Example request with name**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
POST /users HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
Content-Type: application/json;charset=UTF-8
|
||||
|
||||
{
|
||||
"username": "user3",
|
||||
"email": "user3@example.com",
|
||||
"active": true,
|
||||
"roles": [
|
||||
{"name": "myRole"}
|
||||
]
|
||||
}
|
||||
|
||||
@ -130,7 +148,7 @@ class UsersList(AuthenticatedResource):
|
||||
{
|
||||
"id": 3,
|
||||
"active": True,
|
||||
"email": "user3@example.com,
|
||||
"email": "user3@example.com",
|
||||
"username": "user3",
|
||||
"profileImage": null
|
||||
}
|
||||
@ -202,7 +220,7 @@ class Users(AuthenticatedResource):
|
||||
|
||||
Update a user
|
||||
|
||||
**Example request**:
|
||||
**Example request with ID**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
@ -216,7 +234,25 @@ class Users(AuthenticatedResource):
|
||||
"email": "user1@example.com",
|
||||
"active": false,
|
||||
"roles": [
|
||||
{'id': 1} - or - {'name': 'myRole'}
|
||||
{"id": 1}
|
||||
]
|
||||
}
|
||||
|
||||
**Example request with name**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
PUT /users/1 HTTP/1.1
|
||||
Host: example.com
|
||||
Accept: application/json, text/javascript
|
||||
Content-Type: application/json;charset=UTF-8
|
||||
|
||||
{
|
||||
"username": "user1",
|
||||
"email": "user1@example.com",
|
||||
"active": false,
|
||||
"roles": [
|
||||
{"name": "myRole"}
|
||||
]
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user