Exemplo n.º 1
0
class DomainsSettings(ConfigOpts):
    allow_domain_registration = options.BoolOpt(default=True)
    allow_domain_transfer = options.BoolOpt(default=True)
    enable_default_tld = options.BoolOpt(default=False)
    default_tld = options.StringOpt(allow_null=True)
    enable_default_nameservers = options.BoolOpt(default=False)
    default_nameserver1 = options.StringOpt(allow_null=True)
    default_nameserver2 = options.StringOpt(allow_null=True)
    default_nameserver3 = options.StringOpt(allow_null=True)
    default_nameserver4 = options.StringOpt(allow_null=True)

    class Meta:
        section = 'DOMAINS'

    @staticmethod
    def for_client(client: Client) -> 'DomainsSettings':
        if not client:
            return DomainsSettings()

        if client.configuration:
            return DomainsSettings(configuration_id=client.configuration.id)
        else:
            try:
                default_config = Configuration.objects.default(
                    reseller_resources=client.reseller_resources)
            except Configuration.DoesNotExist:
                return DomainsSettings()
            else:
                return DomainsSettings(configuration_id=default_config.id)
Exemplo n.º 2
0
class SignUpSettingsConfig(ConfigOpts):
    require_confirmation = options.BoolOpt(default=False)
    email_confirmation_template = options.StringOpt(
        max_length=64, default='account.signup.confirm')
    allow_free_email_addresses = options.BoolOpt(default=True)
    forbidden_domains_for_email_signup = options.StringOpt(default=None,
                                                           allow_null=True)
    domains_for_email_signup_whitelist = options.StringOpt(default=None,
                                                           allow_null=True)

    class Meta:
        section = 'SIGNUP_SETTINGS'
Exemplo n.º 3
0
class TermsOfServiceSettingsConfig(ConfigOpts):
    require_end_users_to_agree_with_latest_tos = options.BoolOpt(default=False)
    ask_again_after = options.IntegerOpt(min=0, default=43800)
    forbid_access_after = options.StringOpt(default='', allow_null=True)

    class Meta:
        section = 'TOS_SETTINGS'
Exemplo n.º 4
0
class OpenstackSettings(ConfigOpts):
    auto_cleanup_images = options.BoolOpt(default=False)
    auto_cleanup_number_of_days = options.IntegerOpt(default=14)
    auto_cleanup_image_types = options.ListOpt(
        default=['ami', 'ari', 'aki', 'vhd', 'vmdk', 'raw', 'qcow2', 'vdi', 'iso'],
        item_type=options.StringOpt(),
    )

    class Meta:
        section = 'OPENSTACK'

    @staticmethod
    def for_client(client: Client) -> 'OpenstackSettings':
        if not client:
            return OpenstackSettings()

        if client.configuration:
            return OpenstackSettings(configuration_id=client.configuration.id)
        else:
            try:
                default_config = Configuration.objects.default(reseller_resources=client.reseller_resources)
            except Configuration.DoesNotExist:
                return OpenstackSettings()
            else:
                return OpenstackSettings(configuration_id=default_config.id)
Exemplo n.º 5
0
class BillingSettings(ConfigOpts):
    credit_limit = options.DecimalOpt(max_digits=14,
                                      decimal_places=2,
                                      default=0)
    credit_required = options.DecimalOpt(max_digits=14,
                                         decimal_places=2,
                                         default=0)
    auto_resume_client_on_credit_update = options.BoolOpt(default=False)
    # For Clients with billing agreements
    credit_limit_with_agreement = options.DecimalOpt(max_digits=14,
                                                     decimal_places=2,
                                                     default=0)
    credit_required_with_agreement = options.DecimalOpt(max_digits=14,
                                                        decimal_places=2,
                                                        default=0)
    # Suspend
    auto_suspend = options.BoolOpt(default=False)
    auto_suspend_delay_hours_enabled = options.BoolOpt(default=False)
    auto_suspend_delay_hours = options.IntegerOpt(default=0, min=0)
    auto_suspend_delay_credit_enabled = options.BoolOpt(default=False)
    auto_suspend_delay_credit = options.DecimalOpt(max_digits=14,
                                                   decimal_places=2,
                                                   default=0,
                                                   min=0)
    auto_suspend_notification_template = options.StringOpt(allow_null=True)
    # Terminate
    auto_terminate = options.BoolOpt(default=False)
    auto_terminate_delay_hours = options.IntegerOpt(default=24)
    suspend_instead_of_terminate = options.BoolOpt(default=True)
    auto_terminate_notification_template = options.StringOpt(allow_null=True)
    # Low
    credit_notifications_enabled = options.BoolOpt(default=False)
    credit_notifications_when_agreement_enabled = options.BoolOpt(
        default=False)
    first_credit_remaining_hours = options.IntegerOpt(default=72)
    first_credit_notification_template = options.StringOpt(allow_null=True)
    second_credit_remaining_hours = options.IntegerOpt(default=24)
    second_credit_notification_template = options.StringOpt(allow_null=True)
    third_credit_remaining_hours = options.IntegerOpt(default=1)
    third_credit_notification_template = options.StringOpt(allow_null=True)
    # Notification
    sender_email = options.StringOpt(allow_null=True)
    sender_name = options.StringOpt(allow_null=True)
    # Invoicing
    company_info = options.StringOpt(default="My Company")
    # Taxing
    auto_eu_tax_exemption = options.BoolOpt(default=False)
    add_tax_for_credit_invoices = options.BoolOpt(default=True)

    # Billing
    generate_invoices = options.BoolOpt(default=False)
    create_todo_on_invoice_payment = options.BoolOpt(default=False)
    send_notifications_for_unpaid_invoices = options.BoolOpt(default=False)
    auto_settle_usage = options.BoolOpt(default=False)
    auto_pay_invoice_only_when_enough_credit = options.BoolOpt(default=False)
    next_paid_invoice_number = options.IntegerOpt(default=1)
    next_paid_invoice_number_format = options.DjangoStringTemplateOpt(
        default='INV {{ number }}', allow_null=True)
    minim_uptodate_credit_for_invoice_payment = options.IntegerOpt(default=0,
                                                                   min=0)

    invoicing_option = options.StringOpt(default='fiscal_on_paid',
                                         choices=('only_proforma',
                                                  'always_fiscal',
                                                  'fiscal_on_paid'))

    limit_billable_seconds_per_month = options.BoolOpt(default=True)
    billable_seconds_per_month = options.IntegerOpt(default=2400000,
                                                    min=1,
                                                    max=3000000)

    issue_invoice_before_next_due_date = options.BoolOpt(default=False)
    next_invoice_date_offset = options.IntegerOpt(default=0, min=0, max=30)
    billing_cycle_as_calendar_month = options.BoolOpt(default=False)

    # Signup
    fraud_check = options.BoolOpt(default=False)
    maxmind_manual_review_score = options.IntegerOpt(min=1, max=99, default=30)
    maxmind_fraud_score = options.IntegerOpt(min=1, max=99, default=60)
    enable_maxmind_insights = options.BoolOpt(default=True)
    auto_create_order = options.BoolOpt(default=False)
    auto_order_service = options.IntegerOpt(allow_null=True)
    auto_order_service_cycle = options.IntegerOpt(allow_null=True)
    auto_order_service_params = options.JsonOpt(allow_null=True)
    client_initial_credit = options.IntegerOpt(min=0, default=0)

    class Meta:
        section = 'BILLING'
Exemplo n.º 6
0
class OSConfig(ConfigOpts):
    auth_url = options.URIOpt(label='Keystone auth URL', required=True)
    username = options.StringOpt(default='admin', required=True)
    password = options.StringOpt(encrypted=True, required=True)
    user_domain_id = options.StringOpt(default='default')
    insecure = options.BoolOpt(default=False)
    identity_type = options.StringOpt(default='identity')
    default_role = options.StringOpt(default='', allow_null=True)
    default_interface = options.StringOpt(choices=('admin', 'public',
                                                   'private'),
                                          default='public')
    user_project_id = options.StringOpt(required=True)
    default_region = options.StringOpt(default='', allow_null=True)
    default_project_name = options.DjangoStringTemplateOpt(
        default='{{ client.name }} - {{ client.id }}',
        allow_null=False,
        required=True)
    default_project_description = options.DjangoStringTemplateOpt(
        default='Fleio created for {{ client.name }}',
        allow_null=False,
        required=True)
    project_domain_id = options.StringOpt(default='default')
    identity_api_version = options.StringOpt(
        max_length=6, default=get_default_api_value('identity'))
    compute_api_version = options.StringOpt(
        default=get_default_api_value('compute'))
    dns_api_version = options.StringOpt(default=get_default_api_value('dns'))
    volume_api_version = options.StringOpt(
        default=get_default_api_value('volume'))
    volumev2_api_version = options.StringOpt(
        default=get_default_api_value('volumev2'))
    volumev3_api_version = options.StringOpt(
        default=get_default_api_value('volumev3'))
    volume_service_type = options.StringOpt(
        default=settings.OPENSTACK_DEFAULT_VOLUME_SERVICE_TYPE)
    network_api_version = options.StringOpt(
        default=get_default_api_value('network'))
    image_api_version = options.StringOpt(
        default=get_default_api_value('image'))
    metric_api_version = options.StringOpt(
        default=get_default_api_value('metric'))
    container_infra_api_version = options.StringOpt(
        default=get_default_api_value('container-infra'))
    notifications_url = options.ListOpt(
        encrypted=True,
        item_type=options.URIOpt(schemes=('rabbit', 'amqp', 'kombu', 'pika',
                                          'zmq', 'kafka'),
                                 default='rabbit:///',
                                 require_authority=False))
    notifications_topic = options.ListOpt(default=['notifications'])
    notifications_exchange = options.ListOpt(default=[
        'cinder', 'glance', 'keystone', 'neutron', 'nova', 'openstack'
    ])
    notifications_pool = options.StringOpt(default=None, allow_null=True)
    timeout = options.IntegerOpt(min=1, default=60)
    require_valid_ssl = options.BoolOpt(default=False)
    volume_size_increments = options.JsonOpt(allow_null=True)
    notifications_settings_version = options.StringOpt(default='0')

    hide_projects_and_api_users = options.BoolOpt(default=False)
    hide_project_ids = options.StringOpt(default=None, allow_null=True)
    prefix_api_users_with_username = options.BoolOpt(default=False)
    auto_allocated_topology = options.BoolOpt(default=True)
    force_config_drive_for_instance_creation = options.BoolOpt(default=False)

    class Meta:
        section = 'OPENSTACK_PLUGIN'
Exemplo n.º 7
0
class SFASettingsConfig(ConfigOpts):
    require_end_users_to_use_sfa = options.BoolOpt(default=False)
    require_staff_users_to_use_sfa = options.BoolOpt(default=False)

    class Meta:
        section = 'SFA_SETTINGS'