Minor documentation fixes/tweaks (#597)

Mostly typos, grammar errors and inconsistent indentation in code
examples.

Some errors detected using Topy (https://github.com/intgr/topy), all
changes verified by hand.
This commit is contained in:
Marti Raudsepp 2016-12-14 19:29:04 +02:00 committed by kevgliss
parent fbcedc2fa0
commit 71ddbb409c
47 changed files with 109 additions and 109 deletions

View File

@ -415,7 +415,7 @@ The following configuration properties are required to use the Digicert issuer p
CFSSL Issuer Plugin CFSSL Issuer Plugin
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
The following configuration properties are required to use the the CFSSL issuer plugin. The following configuration properties are required to use the CFSSL issuer plugin.
.. data:: CFSSL_URL .. data:: CFSSL_URL
:noindex: :noindex:
@ -489,7 +489,7 @@ STS-AssumeRole
Next we will create the the Lemur IAM role. Next we will create the Lemur IAM role.
.. note:: .. note::
@ -739,7 +739,7 @@ and to get help on sub-commands
Upgrading Lemur Upgrading Lemur
=============== ===============
To upgrade Lemur to the newest release you will need to ensure you have the lastest code and have run any needed To upgrade Lemur to the newest release you will need to ensure you have the latest code and have run any needed
database migrations. database migrations.
To get the latest code from github run To get the latest code from github run
@ -947,7 +947,7 @@ Identity and Access Management
Lemur uses a Role Based Access Control (RBAC) mechanism to control which users have access to which resources. When a Lemur uses a Role Based Access Control (RBAC) mechanism to control which users have access to which resources. When a
user is first created in Lemur they can be assigned one or more roles. These roles are typically dynamically created user is first created in Lemur they can be assigned one or more roles. These roles are typically dynamically created
depending on a external identity provider (Google, LDAP, etc.,) or are hardcoded within Lemur and associated with special depending on an external identity provider (Google, LDAP, etc.), or are hardcoded within Lemur and associated with special
meaning. meaning.
Within Lemur there are three main permissions: AdminPermission, CreatorPermission, OwnerPermission. Sub-permissions such Within Lemur there are three main permissions: AdminPermission, CreatorPermission, OwnerPermission. Sub-permissions such

View File

@ -48,7 +48,7 @@ of Lemur. You'll want to make sure you have a few things on your local system fi
* pip * pip
* virtualenv (ideally virtualenvwrapper) * virtualenv (ideally virtualenvwrapper)
* node.js (for npm and building css/javascript) * node.js (for npm and building css/javascript)
* (Optional) Potgresql * (Optional) PostgreSQL
Once you've got all that, the rest is simple: Once you've got all that, the rest is simple:
@ -156,7 +156,7 @@ This is accomplished with a Gulp task:
The gulp task compiles all the JS/CSS/HTML files and opens the Lemur welcome page in your default browsers. Additionally any changes to made to the JS/CSS/HTML with be reloaded in your browsers. The gulp task compiles all the JS/CSS/HTML files and opens the Lemur welcome page in your default browsers. Additionally any changes to made to the JS/CSS/HTML with be reloaded in your browsers.
Developing with Flask Developing with Flask
---------------------- ---------------------
Because Lemur is just Flask, you can use all of the standard Flask functionality. The only difference is you'll be accessing commands that would normally go through manage.py using the ``lemur`` CLI helper instead. Because Lemur is just Flask, you can use all of the standard Flask functionality. The only difference is you'll be accessing commands that would normally go through manage.py using the ``lemur`` CLI helper instead.
@ -175,7 +175,7 @@ Schema changes should always introduce the new schema in a commit, and then intr
Removing columns and tables requires a slightly more painful flow, and should resemble the follow multi-commit flow: Removing columns and tables requires a slightly more painful flow, and should resemble the follow multi-commit flow:
- Remove all references to the column or table (but dont remove the Model itself) - Remove all references to the column or table (but don't remove the Model itself)
- Remove the model code - Remove the model code
- Remove the table or column - Remove the table or column

View File

@ -154,20 +154,20 @@ that can be used to help define sub-destinations.
For example, if we look at the aws-destination plugin we can see that it defines an `accountNumber` option:: For example, if we look at the aws-destination plugin we can see that it defines an `accountNumber` option::
options = [ options = [
{ {
'name': 'accountNumber', 'name': 'accountNumber',
'type': 'int', 'type': 'int',
'required': True, 'required': True,
'validation': '/^[0-9]{12,12}$/', 'validation': '/^[0-9]{12,12}$/',
'helpMessage': 'Must be a valid AWS account number!', 'helpMessage': 'Must be a valid AWS account number!',
} }
] ]
By defining an `accountNumber` we can make this plugin handle many N number of AWS accounts instead of just one. By defining an `accountNumber` we can make this plugin handle many N number of AWS accounts instead of just one.
The schema for defining plugin options are pretty straightforward: The schema for defining plugin options are pretty straightforward:
- **Name**: name of the variable you wish to present the user, snake case (snakeCase) is preferrred as Lemur - **Name**: name of the variable you wish to present the user, snake case (snakeCase) is preferred as Lemur
will parse these and create pretty variable titles will parse these and create pretty variable titles
- **Type** there are currently four supported variable types - **Type** there are currently four supported variable types
- **Int** creates an html integer box for the user to enter integers into - **Int** creates an html integer box for the user to enter integers into
@ -200,7 +200,7 @@ You would also then need to build additional code to trigger the new notificatio
The second is `ExpirationNotificationPlugin`, this object inherits from `NotificationPlugin` object. The second is `ExpirationNotificationPlugin`, this object inherits from `NotificationPlugin` object.
You will most likely want to base your plugin on, if you want to add new channels for expiration notices (Slack, Hipcat, Jira, etc.). It adds default options that are required by You will most likely want to base your plugin on, if you want to add new channels for expiration notices (Slack, Hipcat, Jira, etc.). It adds default options that are required by
by all expiration notifications (interval, unit). This interface expects for the child to define the following function:: all expiration notifications (interval, unit). This interface expects for the child to define the following function::
def send(self): def send(self):
# request.post("some alerting infrastructure") # request.post("some alerting infrastructure")
@ -210,10 +210,10 @@ Source
------ ------
When building Lemur we realized that although it would be nice if every certificate went through Lemur to get issued, but this is not When building Lemur we realized that although it would be nice if every certificate went through Lemur to get issued, but this is not
always be the case. Often times there are third parties that will issue certificates on your behalf and these can get deployed always be the case. Oftentimes there are third parties that will issue certificates on your behalf and these can get deployed
to infrastructure without any interaction with Lemur. In an attempt to combat this and try to track every certificate, Lemur has a notion of to infrastructure without any interaction with Lemur. In an attempt to combat this and try to track every certificate, Lemur has a notion of
certificate **Sources**. Lemur will contact the source at periodic intervals and attempt to **sync** against the source. This means downloading or discovering any certificate **Sources**. Lemur will contact the source at periodic intervals and attempt to **sync** against the source. This means downloading or discovering any
certificate Lemur does not know about and adding the certificate to it's inventory to be tracked and alerted on. certificate Lemur does not know about and adding the certificate to its inventory to be tracked and alerted on.
The `SourcePlugin` object has one default option of `pollRate`. This controls the number of seconds which to get new certificates. The `SourcePlugin` object has one default option of `pollRate`. This controls the number of seconds which to get new certificates.
@ -230,7 +230,7 @@ The `SourcePlugin` object requires implementation of one function::
.. note:: .. note::
Often times to facilitate code re-use it makes sense put source and destination plugins into one package. Oftentimes to facilitate code re-use it makes sense put source and destination plugins into one package.
Export Export
@ -270,9 +270,9 @@ Augment your setup.py to ensure at least the following:
setup( setup(
# ... # ...
install_requires=[ install_requires=[
'lemur', 'lemur',
] ]
) )

View File

@ -18,7 +18,7 @@ that Lemur can then manage.
.. figure:: create_authority.png .. figure:: create_authority.png
Enter a authority name and short description about the authority. Enter an owner, Enter an authority name and short description about the authority. Enter an owner,
and certificate common name. Depending on the authority and the authority/issuer plugin and certificate common name. Depending on the authority and the authority/issuer plugin
these values may or may not be used. these values may or may not be used.
@ -56,7 +56,7 @@ Import an Existing Certificate
.. figure:: upload_certificate.png .. figure:: upload_certificate.png
Enter a owner, short description and public certificate. If there are intermediates and private keys Enter an owner, short description and public certificate. If there are intermediates and private keys
Lemur will track them just as it does if the certificate were created through Lemur. Lemur generates Lemur will track them just as it does if the certificate were created through Lemur. Lemur generates
a certificate name but you can override that by passing a value to the `Custom Name` field. a certificate name but you can override that by passing a value to the `Custom Name` field.

View File

@ -54,7 +54,7 @@ Doing a Release
doing-a-release doing-a-release
FAQ FAQ
---- ---
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1

View File

@ -37,13 +37,13 @@ Entropy
------- -------
Lemur generates private keys for the certificates it creates. This means that it is vitally important that Lemur has enough entropy to draw from. To generate private keys Lemur uses the python library `Cryptography <https://cryptography.io>`_. In turn Cryptography uses OpenSSL bindings to generate Lemur generates private keys for the certificates it creates. This means that it is vitally important that Lemur has enough entropy to draw from. To generate private keys Lemur uses the python library `Cryptography <https://cryptography.io>`_. In turn Cryptography uses OpenSSL bindings to generate
keys just like you might from the OpenSSL command line. OpenSSL draws it's initial entropy from system during startup and uses PRNGs to generate a stream of random bytes (as output by /dev/urandom) whenever it needs to do a cryptographic operation. keys just like you might from the OpenSSL command line. OpenSSL draws its initial entropy from system during startup and uses PRNGs to generate a stream of random bytes (as output by /dev/urandom) whenever it needs to do a cryptographic operation.
What does all this mean? Well in order for the keys What does all this mean? Well in order for the keys
that Lemur generates to be strong, the system needs to interact with the outside world. This is typically accomplished through the systems hardware (thermal, sound, video user-input, etc.) since the physical world is much more "random" than the computer world. that Lemur generates to be strong, the system needs to interact with the outside world. This is typically accomplished through the systems hardware (thermal, sound, video user-input, etc.) since the physical world is much more "random" than the computer world.
If you are running Lemur on its own server with its own hardware "bare metal" then the entropy of the system is typically "good enough" for generating keys. If however you are using an VM on shared hardware there is a potential that your initial seed data (data that was initially If you are running Lemur on its own server with its own hardware "bare metal" then the entropy of the system is typically "good enough" for generating keys. If however you are using a VM on shared hardware there is a potential that your initial seed data (data that was initially
fed to the PRNG) is not very good. What's more VMs have been known to be unable to inject more entropy into the system once it has been started. This is because there is typically very little interaction with the server once it has been started. fed to the PRNG) is not very good. What's more, VMs have been known to be unable to inject more entropy into the system once it has been started. This is because there is typically very little interaction with the server once it has been started.
The amount of effort you wish to expend ensuring that Lemur has good entropy to draw from is up to your specific risk tolerance and how Lemur is configured. The amount of effort you wish to expend ensuring that Lemur has good entropy to draw from is up to your specific risk tolerance and how Lemur is configured.
@ -72,7 +72,7 @@ Nginx is a very popular choice to serve a Python project:
Nginx doesn't run any Python process, it only serves requests from outside to Nginx doesn't run any Python process, it only serves requests from outside to
the Python server. the Python server.
Therefore there are two steps: Therefore, there are two steps:
- Run the Python process. - Run the Python process.
- Run Nginx. - Run Nginx.
@ -223,7 +223,7 @@ Also included in the configurations above are several best practices when it com
HSTS, disabling vulnerable ciphers are all good ideas when it comes to deploying Lemur into a production environment. HSTS, disabling vulnerable ciphers are all good ideas when it comes to deploying Lemur into a production environment.
.. note:: .. note::
This is a rather incomplete apache config for running Lemur (needs mod_wsgi etc.,), if you have a working apache config please let us know! This is a rather incomplete apache config for running Lemur (needs mod_wsgi etc.), if you have a working apache config please let us know!
.. seealso:: .. seealso::
`Mozilla SSL Configuration Generator <https://mozilla.github.io/server-side-tls/ssl-config-generator/>`_ `Mozilla SSL Configuration Generator <https://mozilla.github.io/server-side-tls/ssl-config-generator/>`_

View File

@ -16,7 +16,7 @@ Some basic prerequisites which you'll need in order to run Lemur:
* PostgreSQL 9.4 or greater * PostgreSQL 9.4 or greater
* Nginx * Nginx
.. note:: Lemur was built with in AWS in mind. This means that things such as databases (RDS), mail (SES), and TLS (ELB), are largely handled for us. Lemur does **not** require AWS to function. Our guides and documentation try to be be as generic as possible and are not intended to document every step of launching Lemur into a given environment. .. note:: Lemur was built with in AWS in mind. This means that things such as databases (RDS), mail (SES), and TLS (ELB), are largely handled for us. Lemur does **not** require AWS to function. Our guides and documentation try to be as generic as possible and are not intended to document every step of launching Lemur into a given environment.
Installing Build Dependencies Installing Build Dependencies
@ -105,7 +105,7 @@ Update your configuration
Once created, you will need to update the configuration file with information about your environment, such as which database to talk to, where keys are stored etc. Once created, you will need to update the configuration file with information about your environment, such as which database to talk to, where keys are stored etc.
.. note:: If you are unfamiliar with with the SQLALCHEMY_DATABASE_URI string it can be broken up like so: .. note:: If you are unfamiliar with the SQLALCHEMY_DATABASE_URI string it can be broken up like so:
``postgresql://userame:password@<database-fqdn>:<database-port>/<database-name>`` ``postgresql://userame:password@<database-fqdn>:<database-port>/<database-name>``
@ -134,7 +134,7 @@ Next, we will create our new database:
.. _InitializingLemur: .. _InitializingLemur:
.. note:: .. note::
For this guide we assume you will use the `postgres` user to connect to your database, when deploying to a VM or container this is often all you will need. If you have a shared database it is recommend you give Lemur it's own user. For this guide we assume you will use the `postgres` user to connect to your database, when deploying to a VM or container this is often all you will need. If you have a shared database it is recommend you give Lemur its own user.
.. note:: .. note::
Postgres 9.4 or greater is required as Lemur relies advanced data columns (e.g. JSON Column type) Postgres 9.4 or greater is required as Lemur relies advanced data columns (e.g. JSON Column type)

View File

@ -60,7 +60,7 @@ and public disclosure may be shortened considerably.
The list of people and organizations who receives advanced notification of The list of people and organizations who receives advanced notification of
security issues is not, and will not, be made public. This list generally security issues is not, and will not, be made public. This list generally
consists of high profile downstream distributors and is entirely at the consists of high-profile downstream distributors and is entirely at the
discretion of the ``lemur`` team. discretion of the ``lemur`` team.
.. _`master`: https://github.com/Netflix/lemur .. _`master`: https://github.com/Netflix/lemur

View File

@ -108,7 +108,7 @@ class Login(Resource):
class Ping(Resource): class Ping(Resource):
""" """
This class serves as an example of how one might implement an SSO provider for use with Lemur. In This class serves as an example of how one might implement an SSO provider for use with Lemur. In
this example we use a OpenIDConnect authentication flow, that is essentially OAuth2 underneath. If you have an this example we use an OpenIDConnect authentication flow, that is essentially OAuth2 underneath. If you have an
OAuth2 provider you want to use Lemur there would be two steps: OAuth2 provider you want to use Lemur there would be two steps:
1. Define your own class that inherits from :class:`flask.ext.restful.Resource` and create the HTTP methods the \ 1. Define your own class that inherits from :class:`flask.ext.restful.Resource` and create the HTTP methods the \

View File

@ -1,7 +1,7 @@
""" """
.. module: lemur.authorities.models .. module: lemur.authorities.models
:platform: unix :platform: unix
:synopsis: This module contains all of the models need to create a authority within Lemur. :synopsis: This module contains all of the models need to create an authority within Lemur.
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com> .. moduleauthor:: Kevin Glisson <kglisson@netflix.com>

View File

@ -18,7 +18,7 @@ from lemur.certificates.service import upload
def update(authority_id, description=None, owner=None, active=None, roles=None): def update(authority_id, description=None, owner=None, active=None, roles=None):
""" """
Update a an authority with new values. Update an authority with new values.
:param authority_id: :param authority_id:
:param roles: roles that are allowed to use this authority :param roles: roles that are allowed to use this authority
@ -178,7 +178,7 @@ def render(args):
else: else:
query = database.filter(query, Authority, terms) query = database.filter(query, Authority, terms)
# we make sure that a user can only use an authority they either own are are a member of - admins can see all # we make sure that a user can only use an authority they either own are a member of - admins can see all
if not args['user'].is_admin: if not args['user'].is_admin:
authority_ids = [] authority_ids = []
for authority in args['user'].authorities: for authority in args['user'].authorities:

View File

@ -95,7 +95,7 @@ class AuthoritiesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair. format is k;v :query filter: key value pair. format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -285,7 +285,7 @@ class Authorities(AuthenticatedResource):
""" """
.. http:put:: /authorities/1 .. http:put:: /authorities/1
Update a authority Update an authority
**Example request**: **Example request**:

View File

@ -32,7 +32,7 @@ from lemur.roles import service as role_service
def get(cert_id): def get(cert_id):
""" """
Retrieves certificate by it's ID. Retrieves certificate by its ID.
:param cert_id: :param cert_id:
:return: :return:
@ -42,7 +42,7 @@ def get(cert_id):
def get_by_name(name): def get_by_name(name):
""" """
Retrieves certificate by it's Name. Retrieves certificate by its Name.
:param name: :param name:
:return: :return:

View File

@ -111,7 +111,7 @@ class CertificatesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int. default is 1 :query page: int. default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number. default is 10 :query count: count number. default is 10
@ -296,10 +296,10 @@ class CertificatesUpload(AuthenticatedResource):
Accept: application/json, text/javascript Accept: application/json, text/javascript
{ {
"owner": "joe@exmaple.com", "owner": "joe@example.com",
"publicCert": "---Begin Public...", "publicCert": "-----BEGIN CERTIFICATE-----...",
"intermediateCert": "---Begin Public...", "intermediateCert": "-----BEGIN CERTIFICATE-----...",
"privateKey": "---Begin Private..." "privateKey": "-----BEGIN RSA PRIVATE KEY-----..."
"destinations": [], "destinations": [],
"notifications": [], "notifications": [],
"replacements": [], "replacements": [],
@ -427,7 +427,7 @@ class CertificatePrivateKey(AuthenticatedResource):
Content-Type: text/javascript Content-Type: text/javascript
{ {
"key": "----Begin ...", "key": "-----BEGIN ...",
} }
:reqheader Authorization: OAuth token to authenticate :reqheader Authorization: OAuth token to authenticate
@ -732,7 +732,7 @@ class NotificationCertificatesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.status.views .. module: lemur.defaults.views
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.
""" """

View File

@ -56,7 +56,7 @@ def delete(destination_id):
def get(destination_id): def get(destination_id):
""" """
Retrieves an destination by it's lemur assigned ID. Retrieves an destination by its lemur assigned ID.
:param destination_id: Lemur assigned ID :param destination_id: Lemur assigned ID
:rtype : Destination :rtype : Destination
@ -67,7 +67,7 @@ def get(destination_id):
def get_by_label(label): def get_by_label(label):
""" """
Retrieves a destination by it's label Retrieves a destination by its label
:param label: :param label:
:return: :return:

View File

@ -82,7 +82,7 @@ class DestinationsList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int. default is 1 :query page: int. default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -392,7 +392,7 @@ class CertificateDestinations(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -34,7 +34,7 @@ def get_all():
def get_by_name(name): def get_by_name(name):
""" """
Fetches domain by it's name Fetches domain by its name
:param name: :param name:
:return: :return:

View File

@ -68,7 +68,7 @@ class DomainsList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number. default is 10 :query count: count number. default is 10
@ -115,7 +115,7 @@ class DomainsList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -255,7 +255,7 @@ class CertificateDomains(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.certificate.cli .. module: lemur.endpoints.cli
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,7 +1,7 @@
""" """
.. module: lemur.endpoints.models .. module: lemur.endpoints.models
:platform: unix :platform: unix
:synopsis: This module contains all of the models need to create a authority within Lemur. :synopsis: This module contains all of the models need to create an authority within Lemur.
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com> .. moduleauthor:: Kevin Glisson <kglisson@netflix.com>

View File

@ -51,7 +51,7 @@ class EndpointsList(AuthenticatedResource):
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair. format is k;v :query filter: key value pair. format is k;v
:query limit: limit number default is 10 :query limit: limit number default is 10

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.log.views .. module: lemur.logs.views
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.
@ -57,7 +57,7 @@ class LogsList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -372,7 +372,7 @@ class LemurServer(Command):
app = WSGIApplication() app = WSGIApplication()
# run startup tasks on a app like object # run startup tasks on an app like object
pre_app = create_app(kwargs.get('config')) pre_app = create_app(kwargs.get('config'))
validate_conf(pre_app, REQUIRED_VARIABLES) validate_conf(pre_app, REQUIRED_VARIABLES)

View File

@ -127,7 +127,7 @@ def delete(notification_id):
def get(notification_id): def get(notification_id):
""" """
Retrieves an notification by it's lemur assigned ID. Retrieves an notification by its lemur assigned ID.
:param notification_id: Lemur assigned ID :param notification_id: Lemur assigned ID
:rtype : Notification :rtype : Notification
@ -138,7 +138,7 @@ def get(notification_id):
def get_by_label(label): def get_by_label(label):
""" """
Retrieves a notification by it's label Retrieves a notification by its label
:param label: :param label:
:return: :return:

View File

@ -95,7 +95,7 @@ class NotificationsList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -419,7 +419,7 @@ class CertificateNotifications(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.bases.destination .. module: lemur.plugins.bases.destination
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.bases.export .. module: lemur.plugins.bases.export
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.bases.issuer .. module: lemur.plugins.bases.issuer
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.bases.metric .. module: lemur.plugins.bases.metric
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.bases.notification .. module: lemur.plugins.bases.notification
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.bases.source .. module: lemur.plugins.bases.source
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,7 +1,7 @@
""" """
.. module: lemur.plugins.lemur_acme.acme .. module: lemur.plugins.lemur_acme.plugin
:platform: Unix :platform: Unix
:synopsis: This module is responsible for communicating with a ACME CA. :synopsis: This module is responsible for communicating with an ACME CA.
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.
@ -179,7 +179,7 @@ class ACMEIssuerPlugin(IssuerPlugin):
def create_certificate(self, csr, issuer_options): def create_certificate(self, csr, issuer_options):
""" """
Creates a ACME certificate. Creates an ACME certificate.
:param csr: :param csr:
:param issuer_options: :param issuer_options:

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.plugins.lemur_aws.elb .. module: lemur.plugins.lemur_aws.ec2
:synopsis: Module contains some often used and helpful classes that :synopsis: Module contains some often used and helpful classes that
are used to deal with ELBs are used to deal with ELBs

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.plugins.lemur_aws.aws .. module: lemur.plugins.lemur_aws.plugin
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.common.services.aws.sts .. module: lemur.plugins.lemur_aws.sts
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.plugins.lemur_digicert.digicert .. module: lemur.plugins.lemur_digicert.plugin
:platform: Unix :platform: Unix
:synopsis: This module is responsible for communicating with the DigiCert ' :synopsis: This module is responsible for communicating with the DigiCert '
Advanced API. Advanced API.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.plugins.lemur_kubernetes.aws .. module: lemur.plugins.lemur_kubernetes.plugin
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.plugins.lemur_slack.slack .. module: lemur.plugins.lemur_slack.plugin
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.plugins.lemur_verisign.verisign .. module: lemur.plugins.lemur_verisign.plugin
:platform: Unix :platform: Unix
:synopsis: This module is responsible for communicating with the VeriSign VICE 2.0 API. :synopsis: This module is responsible for communicating with the VeriSign VICE 2.0 API.
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
@ -196,7 +196,7 @@ class VerisignIssuerPlugin(IssuerPlugin):
def get_available_units(self): def get_available_units(self):
""" """
Uses the Verisign to fetch the number of available unit's left. This can be used to get tabs Uses the Verisign to fetch the number of available units left. This can be used to get tabs
on the number of certificates that can be issued. on the number of certificates that can be issued.
:return: :return:

View File

@ -79,7 +79,7 @@ class PluginsList(AuthenticatedResource):
class Plugins(AuthenticatedResource): class Plugins(AuthenticatedResource):
""" Defines the the 'plugins' endpoint """ """ Defines the 'plugins' endpoint """
def __init__(self): def __init__(self):
super(Plugins, self).__init__() super(Plugins, self).__init__()

View File

@ -63,7 +63,7 @@ def get(role_id):
def get_by_name(role_name): def get_by_name(role_name):
""" """
Retrieve a role by it's name Retrieve a role by its name
:param role_name: :param role_name:
:return: :return:

View File

@ -70,7 +70,7 @@ class RolesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -353,7 +353,7 @@ class UserRolesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -412,7 +412,7 @@ class AuthorityRolesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -257,7 +257,7 @@ def delete(source_id):
def get(source_id): def get(source_id):
""" """
Retrieves an source by it's lemur assigned ID. Retrieves an source by its lemur assigned ID.
:param source_id: Lemur assigned ID :param source_id: Lemur assigned ID
:rtype : Source :rtype : Source
@ -268,7 +268,7 @@ def get(source_id):
def get_by_label(label): def get_by_label(label):
""" """
Retrieves a source by it's label Retrieves a source by its label
:param label: :param label:
:return: :return:

View File

@ -75,7 +75,7 @@ class SourcesList(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10
@ -331,7 +331,7 @@ class CertificateSources(AuthenticatedResource):
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -1,5 +1,5 @@
""" """
.. module: lemur.user.views .. module: lemur.users.views
:platform: Unix :platform: Unix
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more :copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
:license: Apache, see LICENSE for more details. :license: Apache, see LICENSE for more details.
@ -55,27 +55,27 @@ class UsersList(AuthenticatedResource):
Content-Type: text/javascript Content-Type: text/javascript
{ {
"items": [ "items": [
{ {
"id": 2, "id": 2,
"active": True, "active": True,
"email": "user2@example.com", "email": "user2@example.com",
"username": "user2", "username": "user2",
"profileImage": null "profileImage": null
}, },
{ {
"id": 1, "id": 1,
"active": False, "active": False,
"email": "user1@example.com", "email": "user1@example.com",
"username": "user1", "username": "user1",
"profileImage": null "profileImage": null
} }
] ]
"total": 2 "total": 2
} }
:query sortBy: field to sort on :query sortBy: field to sort on
:query sortDir: acs or desc :query sortDir: asc or desc
:query page: int default is 1 :query page: int default is 1
:query filter: key value pair format is k;v :query filter: key value pair format is k;v
:query count: count number default is 10 :query count: count number default is 10

View File

@ -70,7 +70,7 @@ class Vault(types.TypeDecorator):
""" """
A custom SQLAlchemy column type that transparently handles encryption. A custom SQLAlchemy column type that transparently handles encryption.
This uses the MultiFernet from the cryptography package to faciliate This uses the MultiFernet from the cryptography package to facilitate
key rotation. That class handles encryption and signing. key rotation. That class handles encryption and signing.
Fernet uses AES in CBC mode with 128-bit keys and PKCS7 padding. It Fernet uses AES in CBC mode with 128-bit keys and PKCS7 padding. It