diff --git a/lemur/dns_providers/schemas.py b/lemur/dns_providers/schemas.py index 1f44e0b1..d871b8ef 100644 --- a/lemur/dns_providers/schemas.py +++ b/lemur/dns_providers/schemas.py @@ -8,7 +8,7 @@ class DnsProvidersNestedOutputSchema(LemurOutputSchema): __envelope__ = False id = fields.Integer() name = fields.String() - provider_type = fields.String() + providerType = fields.String() description = fields.String() credentials = fields.String() api_endpoint = fields.String() diff --git a/lemur/dns_providers/service.py b/lemur/dns_providers/service.py index 537b50b0..da475e1e 100644 --- a/lemur/dns_providers/service.py +++ b/lemur/dns_providers/service.py @@ -17,7 +17,8 @@ def render(args): def get(dns_provider_id): - return database.get(DnsProviders, dns_provider_id) + provider = database.get(DnsProviders, dns_provider_id) + return provider def get_friendly(dns_provider_id): @@ -32,8 +33,9 @@ def get_friendly(dns_provider_id): dns_provider_friendly = { "name": dns_provider.name, "description": dns_provider.description, - "provider_type": dns_provider.provider_type, + "providerType": dns_provider.provider_type, "options": dns_provider.options, + "credentials": dns_provider.credentials, } if dns_provider.provider_type == "route53": diff --git a/lemur/dns_providers/views.py b/lemur/dns_providers/views.py index 6d5c6759..a2b956cd 100644 --- a/lemur/dns_providers/views.py +++ b/lemur/dns_providers/views.py @@ -86,7 +86,7 @@ class DnsProvidersList(AuthenticatedResource): **Example request**: { - "provider_type": { + "providerType": { "name": "route53", "requirements": [ { @@ -110,7 +110,7 @@ class DnsProvidersList(AuthenticatedResource): **Example request 2** { - "provider_type": { + "providerType": { "name": "cloudflare", "requirements": [ { @@ -144,6 +144,7 @@ class DnsProvidersList(AuthenticatedResource): class DnsProviders(AuthenticatedResource): + @validate_schema(None, dns_provider_output_schema) def get(self, dns_provider_id): return service.get_friendly(dns_provider_id) diff --git a/lemur/migrations/versions/29d8c8455c86_.py b/lemur/migrations/versions/29d8c8455c86_.py deleted file mode 100644 index f0b4749f..00000000 --- a/lemur/migrations/versions/29d8c8455c86_.py +++ /dev/null @@ -1,62 +0,0 @@ -"""Adding endpoint tables - -Revision ID: 29d8c8455c86 -Revises: 3307381f3b88 -Create Date: 2016-06-28 16:05:25.720213 - -""" - -# revision identifiers, used by Alembic. -revision = '29d8c8455c86' -down_revision = '3307381f3b88' - -from alembic import op -import sqlalchemy as sa -from sqlalchemy.dialects import postgresql - - -def upgrade(): - ### commands auto generated by Alembic - please adjust! ### - op.create_table('ciphers', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=128), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('policy', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=128), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('policies_ciphers', - sa.Column('cipher_id', sa.Integer(), nullable=True), - sa.Column('policy_id', sa.Integer(), nullable=True), - sa.ForeignKeyConstraint(['cipher_id'], ['ciphers.id'], ), - sa.ForeignKeyConstraint(['policy_id'], ['policy.id'], ) - ) - op.create_index('policies_ciphers_ix', 'policies_ciphers', ['cipher_id', 'policy_id'], unique=False) - op.create_table('endpoints', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('owner', sa.String(length=128), nullable=True), - sa.Column('name', sa.String(length=128), nullable=True), - sa.Column('dnsname', sa.String(length=256), nullable=True), - sa.Column('type', sa.String(length=128), nullable=True), - sa.Column('active', sa.Boolean(), nullable=True), - sa.Column('port', sa.Integer(), nullable=True), - sa.Column('date_created', sa.DateTime(), server_default=sa.text(u'now()'), nullable=False), - sa.Column('policy_id', sa.Integer(), nullable=True), - sa.Column('certificate_id', sa.Integer(), nullable=True), - sa.ForeignKeyConstraint(['certificate_id'], ['certificates.id'], ), - sa.ForeignKeyConstraint(['policy_id'], ['policy.id'], ), - sa.PrimaryKeyConstraint('id') - ) - ### end Alembic commands ### - - -def downgrade(): - ### commands auto generated by Alembic - please adjust! ### - op.drop_table('endpoints') - op.drop_index('policies_ciphers_ix', table_name='policies_ciphers') - op.drop_table('policies_ciphers') - op.drop_table('policy') - op.drop_table('ciphers') - ### end Alembic commands ### diff --git a/lemur/migrations/versions/3adfdd6598df_.py b/lemur/migrations/versions/3adfdd6598df_.py index 07918a0f..25f53442 100644 --- a/lemur/migrations/versions/3adfdd6598df_.py +++ b/lemur/migrations/versions/3adfdd6598df_.py @@ -1,4 +1,4 @@ -"""Create dns_providers table +"""Create tables and columns for the acme issuer. Revision ID: 3adfdd6598df Revises: 556ceb3e3c3e @@ -10,30 +10,92 @@ Create Date: 2018-04-10 13:25:47.007556 revision = '3adfdd6598df' down_revision = '556ceb3e3c3e' -from alembic import op import sqlalchemy as sa +from alembic import op from sqlalchemy.dialects.postgresql import JSON - from sqlalchemy_utils import ArrowType +from lemur.utils import Vault + def upgrade(): # create provider table + print("Creating dns_providers table") op.create_table( 'dns_providers', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=256), nullable=True), sa.Column('description', sa.String(length=1024), nullable=True), sa.Column('provider_type', sa.String(length=256), nullable=True), - sa.Column('credentials', sa.String(length=256), nullable=True), + sa.Column('credentials', Vault(), nullable=True), sa.Column('api_endpoint', sa.String(length=256), nullable=True), sa.Column('date_created', ArrowType(), server_default=sa.text('now()'), nullable=False), sa.Column('status', sa.String(length=128), nullable=True), sa.Column('options', JSON), + sa.Column('domains', sa.JSON(), nullable=True), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) + print("Adding dns_provider_id column to certificates") + op.add_column('certificates', sa.Column('dns_provider_id', sa.Integer(), nullable=True)) + print("Adding dns_provider_id column to pending_certs") + op.add_column('pending_certs', sa.Column('dns_provider_id', sa.Integer(), nullable=True)) + print("Adding options column to pending_certs") + op.add_column('pending_certs', sa.Column('options', JSON)) + + print("Creating pending_dns_authorizations table") + op.create_table( + 'pending_dns_authorizations', + sa.Column('id', sa.Integer(), primary_key=True, autoincrement=True), + sa.Column('account_number', sa.String(length=128), nullable=True), + sa.Column('domains', JSON, nullable=True), + sa.Column('dns_provider_type', sa.String(length=128), nullable=True), + sa.Column('options', JSON, nullable=True), + ) + + print("Creating certificates_dns_providers_fk foreign key") + op.create_foreign_key('certificates_dns_providers_fk', 'certificates', 'dns_providers', ['dns_provider_id'], ['id'], + ondelete='cascade') + + print("Altering column types in the api_keys table") + op.alter_column('api_keys', 'issued_at', + existing_type=sa.BIGINT(), + nullable=True) + op.alter_column('api_keys', 'revoked', + existing_type=sa.BOOLEAN(), + nullable=True) + op.alter_column('api_keys', 'ttl', + existing_type=sa.BIGINT(), + nullable=True) + op.alter_column('api_keys', 'user_id', + existing_type=sa.INTEGER(), + nullable=True) def downgrade(): + print("Reverting column types in the api_keys table") + op.alter_column('api_keys', 'user_id', + existing_type=sa.INTEGER(), + nullable=False) + op.alter_column('api_keys', 'ttl', + existing_type=sa.BIGINT(), + nullable=False) + op.alter_column('api_keys', 'revoked', + existing_type=sa.BOOLEAN(), + nullable=False) + op.alter_column('api_keys', 'issued_at', + existing_type=sa.BIGINT(), + nullable=False) + print("Reverting certificates_dns_providers_fk foreign key") + op.drop_constraint('certificates_dns_providers_fk', 'certificates', type_='foreignkey') + + print("Dropping pending_dns_authorizations table") + op.drop_table('pending_dns_authorizations') + print("Undoing modifications to pending_certs table") + op.drop_column('pending_certs', 'options') + op.drop_column('pending_certs', 'dns_provider_id') + print("Undoing modifications to certificates table") + op.drop_column('certificates', 'dns_provider_id') + + print("Deleting dns_providers table") op.drop_table('dns_providers') diff --git a/lemur/migrations/versions/4e78b9e4e1dd_.py b/lemur/migrations/versions/4e78b9e4e1dd_.py deleted file mode 100644 index bde8c5d4..00000000 --- a/lemur/migrations/versions/4e78b9e4e1dd_.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Add dns_provider id column to certificates table - -Revision ID: 4e78b9e4e1dd -Revises: 3adfdd6598df -Create Date: 2018-04-10 14:00:30.701669 - -""" - -# revision identifiers, used by Alembic. -revision = '4e78b9e4e1dd' -down_revision = '3adfdd6598df' - -from alembic import op -import sqlalchemy as sa - - -def upgrade(): - op.add_column('certificates', sa.Column('dns_provider_id', sa.Integer(), nullable=True)) - - -def downgrade(): - op.drop_column('certificates', 'dns_provider_id') diff --git a/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.js b/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.js index f7607f84..2bba66ae 100644 --- a/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.js +++ b/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.js @@ -36,7 +36,9 @@ angular.module('lemur') }) .controller('DnsProviderEditController', function ($scope, $uibModalInstance, DnsProviderService, DnsProviderApi, PluginService, toaster, editId) { - + DnsProviderService.getDnsProviderOptions().then(function(res) { + $scope.options = res; + }); DnsProviderApi.get(editId).then(function (dns_provider) { $scope.dns_provider = dns_provider; diff --git a/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.tpl.html b/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.tpl.html index eee8bfd5..85882de1 100644 --- a/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.tpl.html +++ b/lemur/static/app/angular/dns_providers/dns_provider/dns_provider.tpl.html @@ -31,11 +31,11 @@ Provider Type
-
-
+