DNS Providers list returned

This commit is contained in:
Curtis Castrapel 2018-04-11 15:56:00 -07:00
parent 5125990c4c
commit f6fd262618
10 changed files with 61 additions and 25 deletions

View File

@ -102,7 +102,7 @@ class Certificate(db.Model):
serial = Column(String(128))
cn = Column(String(128))
deleted = Column(Boolean, index=True)
dns_provider = Column(Integer(), nullable=True)
dns_provider_id = Column(Integer(), nullable=True)
not_before = Column(ArrowType)
not_after = Column(ArrowType)

View File

@ -8,6 +8,7 @@
from marshmallow import fields
from lemur.common.schema import LemurOutputSchema
from lemur.authorities.schemas import AuthorityNestedOutputSchema
from lemur.dns_providers.schemas import DnsProvidersNestedOutputSchema
class DefaultOutputSchema(LemurOutputSchema):
@ -18,6 +19,7 @@ class DefaultOutputSchema(LemurOutputSchema):
organization = fields.String()
organizational_unit = fields.String()
issuer_plugin = fields.String()
dns_providers = fields.List(fields.Nested(DnsProvidersNestedOutputSchema))
default_output_schema = DefaultOutputSchema()

View File

@ -9,6 +9,7 @@ from flask_restful import Api
from lemur.common.schema import validate_schema
from lemur.authorities.service import get_by_name
from lemur.auth.service import AuthenticatedResource
from lemur.dns_providers.service import get_all_dns_providers
from lemur.defaults.schemas import default_output_schema
@ -50,7 +51,8 @@ class LemurDefaults(AuthenticatedResource):
"state": "CA",
"location": "Los Gatos",
"organization": "Netflix",
"organizationalUnit": "Operations"
"organizationalUnit": "Operations",
"dnsProviders": [{"name": "test", ...}, {...}],
}
:reqheader Authorization: OAuth token to authenticate
@ -59,6 +61,7 @@ class LemurDefaults(AuthenticatedResource):
"""
default_authority = get_by_name(current_app.config.get('LEMUR_DEFAULT_AUTHORITY'))
dns_providers = get_all_dns_providers()
return dict(
country=current_app.config.get('LEMUR_DEFAULT_COUNTRY'),
@ -67,7 +70,8 @@ class LemurDefaults(AuthenticatedResource):
organization=current_app.config.get('LEMUR_DEFAULT_ORGANIZATION'),
organizational_unit=current_app.config.get('LEMUR_DEFAULT_ORGANIZATIONAL_UNIT'),
issuer_plugin=current_app.config.get('LEMUR_DEFAULT_ISSUER_PLUGIN'),
authority=default_authority
authority=default_authority,
dns_providers=dns_providers,
)

View File

@ -6,15 +6,13 @@ from lemur.database import db
class DnsProviders(db.Model):
db.Table('dns_providers',
Column('id', Integer(), nullable=False),
Column('name', String(length=256), nullable=True),
Column('description', String(length=1024), nullable=True),
Column('provider_type', String(length=256), nullable=True),
Column('credentials', String(length=256), nullable=True),
Column('api_endpoint', String(length=256), nullable=True),
Column('date_created', ArrowType(), server_default=text('now()'), nullable=False),
Column('status', String(length=128), nullable=True),
Column('options', JSON),
PrimaryKeyConstraint('id'),
UniqueConstraint('name'))
__tablename__ = 'dns_providers'
id = Column(Integer(), primary_key=True)
name = Column(String(length=256), unique=True, nullable=True)
description = Column(String(length=1024), nullable=True)
provider_type = Column(String(length=256), nullable=True)
credentials = Column(String(length=256), nullable=True)
api_endpoint = Column(String(length=256), nullable=True)
date_created = Column(ArrowType(), server_default=text('now()'), nullable=False)
status = Column(String(length=128), nullable=True)
options = Column(JSON)

View File

@ -0,0 +1,20 @@
from lemur.common.fields import ArrowDateTime
from lemur.common.schema import LemurOutputSchema
from marshmallow import fields
class DnsProvidersNestedOutputSchema(LemurOutputSchema):
__envelope__ = False
id = fields.Integer()
name = fields.String()
description = fields.String()
provider_type = fields.String()
credentials = fields.String()
api_endpoint = fields.String()
date_created = ArrowDateTime()
status = fields.String()
options = fields.String()
default_output_schema = DnsProvidersNestedOutputSchema()

View File

@ -7,4 +7,10 @@ def get_all_dns_providers(status="active"):
:return:
"""
return DnsProviders.query.all(status=status)
all_dns_providers = DnsProviders.query.all()
dns_provider_result = []
for provider in all_dns_providers:
print(provider)
if provider.status == status:
dns_provider_result.append(provider.__dict__)
return dns_provider_result

View File

@ -231,14 +231,18 @@
</label>
</div>
</div>
<!-- <div class="form-group">
<label class="control-label col-sm-2">
DNS Provider (Only needed for LetsEncrypt or ACME implementations)
</label>
<div class="col-sm-10">
<select class="form-control" ng-model="certificate.extensions.crlDistributionPoints.includeCrlDp"
ng-options="item for item in ['yes', 'no', 'default']"></select>
</div> -->
<div class="col-sm-10">
<!-- two -->
<div class="form-group">
<label class="control-label col-sm-2">
DNS Provider
</label>
<div class="col-sm-10">
<select class="form-control" ng-model="selected" ng-options="item as item.name for item in dnsProviders"></select>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -243,6 +243,7 @@ angular.module('lemur')
certificate.authority = defaults.authority;
}
}
certificate.dns_providers = defaults.dnsProviders;
});
};

View File

@ -47,8 +47,8 @@ angular.module('lemur')
PluginService.getByType('destination').then(function (plugins) {
$scope.plugins = plugins;
_.each($scope.plugins, function (plugin) {
_.each($scope.plugins, function (plugin) {
if (plugin.slug === $scope.destination.plugin.slug) {
plugin.pluginOptions = $scope.destination.plugin.pluginOptions;
$scope.destination.plugin = plugin;

View File

@ -230,6 +230,7 @@ angular.module('lemur')
certificate.authority = defaults.authority;
}
}
certificate.dns_providers = defaults.dnsProviders;
});
};