class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'add_text_record_example'
    workflow_permission = 'add_text_record_example_page'
    configuration = Configuration(workflow_name=workflow_name,
                                  permissions=workflow_permission,
                                  label='Configuration',
                                  required=True,
                                  coerce=int,
                                  validators=[],
                                  is_disabled_on_start=False,
                                  on_complete=['call_view'],
                                  enable_on_complete=['view'])

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                on_complete=['call_zone'],
                enable_on_complete=['zone'])

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                required=True,
                enable_on_complete=['name', 'text', 'submit'])

    name = CustomStringField(label='Name')

    text = CustomStringField(label='Text')

    submit = SubmitField(label='Submit')
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the add_text_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'add_text_record'
    workflow_permission = 'add_text_record_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']}
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='View',
        required=True,
        one_off=True,
        on_complete=['call_zone'],
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['zone']},
        disable_dependencies={'on_change': ['zone']},
        clear_dependencies={'on_change': ['zone']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Zone',
        required=True,
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['name', 'text', 'submit']},
        disable_dependencies={'on_change': ['name', 'text', 'submit']},
        clear_dependencies={'on_change': ['name', 'text']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True
    )

    name = CustomStringField(
        label='Name'
    )

    text = CustomStringField(
        label='Text'
    )

    submit = SubmitField(label='Submit')
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the update_ip4_address_example workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'update_ip4_address_example'
    workflow_permission = 'update_ip4_address_example_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        enable_dependencies={'on_complete': ['ip4_address']},
        disable_dependencies={'on_change': ['ip4_address']},
        clear_dependencies={'on_change': ['ip4_address']})

    ip4_address = IP4Address(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Address',
        required=True,
        clear_below_on_change=False,
        inputs={
            'configuration': 'configuration',
            'address': 'ip4_address'
        },
        server_outputs={
            'on_validate': {
                'state': 'address_state',
                'mac_address': 'mac_address',
                'name': 'description'
            }
        },
        server_side_output_method=get_ip4_address_endpoint,
        result_decorator=filter_allocated,
        should_cascade_clear_on_change=True,
        should_cascade_disable_on_change=True,
        enable_dependencies={
            'on_complete':
            ['address_state', 'mac_address', 'description', 'submit']
        },
        disable_dependencies={
            'on_change':
            ['address_state', 'mac_address', 'description', 'submit']
        })

    line_break = PlainHTML('<hr>')

    address_state = CustomStringField(label='Address State', readonly=True)

    mac_address = CustomStringField(label='MAC Address')

    description = CustomStringField(label='Description')

    submit = SubmitField(label='Update')
Beispiel #4
0
class GenericFormTemplate(GatewayForm):
    """Form to generate HTML and Javascript for the add_text_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """

    workflow_name = "add_text_record"
    workflow_permission = "add_text_record_page"
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=["call_view"],
        enable_dependencies={"on_complete": ["view"]},
        disable_dependencies={"on_change": ["view"]},
        clear_dependencies={"on_change": ["view"]},
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="View",
        required=True,
        one_off=True,
        on_complete=["call_zone"],
        clear_below_on_change=False,
        enable_dependencies={"on_complete": ["zone"]},
        disable_dependencies={"on_change": ["zone"]},
        clear_dependencies={"on_change": ["zone"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Zone",
        required=True,
        clear_below_on_change=False,
        enable_dependencies={"on_complete": ["name", "text", "submit"]},
        disable_dependencies={"on_change": ["name", "text", "submit"]},
        clear_dependencies={"on_change": ["name", "text"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    name = CustomStringField(label="Name")

    text = CustomStringField(label="Text")

    submit = SubmitField(label="Submit")
class GenericFormTemplate(GatewayForm):
    """Form to generate HTML and Javascript for the delete_ip4_address workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """

    workflow_name = "delete_ip4_address"
    workflow_permission = "delete_ip4_address_page"
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        enable_dependencies={"on_complete": ["ip4_address"]},
        disable_dependencies={"on_change": ["ip4_address"]},
        clear_dependencies={"on_change": ["ip4_address"]},
    )

    ip4_address = IP4Address(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Address",
        required=True,
        inputs={"configuration": "configuration", "address": "ip4_address"},
        server_outputs={
            "on_change": {
                "state": "address_state",
                "mac_address": "mac_address",
                "name": "description",
            }
        },
        server_side_output_method=get_ip4_address_endpoint,
        result_decorator=filter_allocated,
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        enable_dependencies={"on_complete": ["submit"]},
        disable_dependencies={
            "on_change": ["address_state", "mac_address", "description", "submit"]
        },
    )

    line_break = PlainHTML("<hr>")

    address_state = CustomStringField(label="Address State", readonly=True)

    mac_address = CustomStringField(label="MAC Address", readonly=True)

    description = CustomStringField(label="Description", readonly=True)

    submit = SubmitField(label="Delete")
class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'add_static_ip4_address_example'
    workflow_permission = 'add_static_ip4_address_example_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        validators=[],
        is_disabled_on_start=False,
        enable_on_complete=['ip4_address'],
    )

    ip4_address = IP4Address(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Address',
        required=True,
        inputs={
            'configuration': 'configuration',
            'address': 'ip4_address'
        },
        result_decorator=filter_unallocated,
        on_complete=['call_view'],
        enable_on_complete=['view', 'mac_address', 'description', 'submit'])

    mac_address = CustomStringField(label='MAC Address')

    description = CustomStringField(label='Description')

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                one_off=True,
                on_complete=['call_zone'],
                on_change=['view_changed'],
                clear_below_on_change=False,
                enable_on_complete=['zone'])

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                on_change=['reset_hostname'],
                clear_below_on_change=False,
                enable_on_complete=['hostname'])

    hostname = CustomStringField(label='Hostname')

    submit = SubmitField(label='Submit')
Beispiel #7
0
class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'update_ip4_address_example'
    workflow_permission = 'update_ip4_address_example_page'
    configuration = Configuration(workflow_name=workflow_name,
                                  permissions=workflow_permission,
                                  label='Configuration',
                                  required=True,
                                  coerce=int,
                                  validators=[],
                                  is_disabled_on_start=False,
                                  enable_on_complete=['ip4_address'])

    ip4_address = IP4Address(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Address',
        required=True,
        inputs={
            'configuration': 'configuration',
            'address': 'ip4_address'
        },
        on_change=['server_output_ip4_address'],
        server_outputs={
            'state': 'address_state',
            'mac_address': 'mac_address',
            'name': 'description'
        },
        server_side_output_method=get_ip4_address_endpoint,
        result_decorator=filter_allocated,
        enable_on_complete=[
            'address_state', 'mac_address', 'description', 'submit'
        ])

    line_break = PlainHTML('<hr>')

    address_state = CustomStringField(label='Address State', readonly=True)

    mac_address = CustomStringField(label='MAC Address')

    description = CustomStringField(label='Description')

    submit = SubmitField(label='Update')
Beispiel #8
0
class GenericFormTemplate(GatewayForm):
    workflow_name = 'cache_example'
    workflow_permission = 'cache_example_page'
    configuration = Configuration(workflow_name=workflow_name,
                                  permissions=workflow_permission,
                                  label='Configuration',
                                  required=True,
                                  coerce=int,
                                  validators=[],
                                  is_disabled_on_start=False,
                                  enable_on_complete=['ip_network', 'submit'],
                                  clear_below_on_change=False)

    ip_network = CustomStringField(label='Network',
                                   validators=[DataRequired()])

    display = PlainHTML("<div id='data_display' />")

    submit = SubmitField(label='Submit')
Beispiel #9
0
class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'delete_alias_record_example'
    workflow_permission = 'delete_alias_record_example_page'
    configuration = Configuration(workflow_name=workflow_name,
                                  permissions=workflow_permission,
                                  label='Configuration',
                                  required=True,
                                  coerce=int,
                                  validators=[],
                                  is_disabled_on_start=False,
                                  on_complete=['call_view'],
                                  enable_on_complete=['view'])

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                on_complete=['call_zone'],
                enable_on_complete=['zone'])

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                required=True,
                enable_on_complete=['alias_record'])

    alias_record = AliasRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Alias Record',
        required=True,
        on_complete=['populate_alias_record_data'],
        enable_on_complete=['name', 'linked_record', 'submit'])

    name = CustomStringField(label='Name', readonly=True)

    linked_record = CustomStringField(label='Linked Record', readonly=True)

    submit = SubmitField(label='Delete')
class GenericFormTemplate(GatewayForm):
    """
    Generic form Template

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'add_mac_address'
    workflow_permission = 'add_mac_address_page'

    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        is_disabled_on_start=False,
    )

    mac_address = CustomStringField(label='MAC Address',
                                    is_disabled_on_start=False,
                                    validators=[MacAddress()],
                                    required=True)

    mac_address_name = CustomStringField(label='MAC Address Name',
                                         is_disabled_on_start=False,
                                         required=True)

    mac_pool_boolean = CustomBooleanField(label='Add to MAC Pool',
                                          is_disabled_on_start=False)

    mac_pool = MACPool(workflow_name=workflow_name,
                       permissions=workflow_permission,
                       label='MAC Pool',
                       is_disabled_on_start=False)

    submit = CustomSubmitField(label='Submit', is_disabled_on_start=False)
Beispiel #11
0
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the update_text_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'update_text_record'
    workflow_permission = 'update_text_record_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']})

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                clear_below_on_change=False,
                display_message=True,
                enable_dependencies={'on_complete': ['parent_zone']},
                disable_dependencies={'on_change': ['parent_zone']},
                clear_dependencies={'on_change': ['parent_zone']},
                should_cascade_disable_on_change=True,
                should_cascade_clear_on_change=True)

    parent_zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Zone',
        required=True,
        start_initialized=True,
        display_message=True,
        inputs={
            'zone': 'parent_zone',
            'configuration': 'configuration',
            'view': 'view'
        },
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['text_record', 'search']},
        disable_dependencies={'on_change': ['text_record', 'search']},
        clear_dependencies={'on_change': ['text_record', 'search']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True)

    text_record = CustomStringField(label='Text Record')

    search = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        default='Search',
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'parent_zone': 'parent_zone',
            'name': 'text_record'
        },
        server_side_method=get_text_records_endpoint,
        display_message=True,
        on_complete=['call_txt_list'],
        enable_dependencies={'on_complete': ['txt_filter', 'txt_list']},
        disable_dependencies={
            'on_change': ['txt_filter', 'txt_list'],
            'on_click': ['txt_filter', 'txt_list']
        },
        clear_dependencies={
            'on_change': ['txt_filter', 'txt_list'],
            'on_click': ['txt_filter', 'txt_list']
        },
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True)

    txt_filter = CustomStringField(label='Filter', is_disabled_on_error=True)

    txt_list = FilteredSelectField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Text',
        size=12,
        filter_field='txt_filter',
        choices=[(0, '')],
        coerce=int,
        is_disabled_on_error=True,
        on_complete=['call_name_js', 'call_text'],
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'parent_zone': 'parent_zone',
            'name': 'text_record'
        },
        clear_dependencies={'on_change': ['name', 'text']},
        server_side_method=get_text_records_endpoint,
        enable_dependencies={'on_complete': ['name', 'text', 'submit']},
        disable_dependencies={'on_change': ['name', 'text', 'submit']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True)

    plain_1 = PlainHTML('<hr>')

    name = CustomStringField(label='New Name', is_disabled_on_error=True)

    text = CustomStringField(label='New Text',
                             inputs={'text': 'txt_list'},
                             is_disabled_on_error=True)

    submit = CustomSubmitField(label='Update')
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the update_host_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'update_host_record'
    workflow_permission = 'update_host_record_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']})

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                clear_below_on_change=False,
                enable_dependencies={'on_complete': ['parent_zone']},
                disable_dependencies={'on_change': ['parent_zone']},
                clear_dependencies={'on_change': ['parent_zone']},
                should_cascade_disable_on_change=True,
                should_cascade_clear_on_change=True)

    parent_zone = Zone(workflow_name=workflow_name,
                       permissions=workflow_permission,
                       label='Zone',
                       required=True,
                       start_initialized=True,
                       inputs={
                           'zone': 'parent_zone',
                           'configuration': 'configuration',
                           'view': 'view'
                       },
                       clear_below_on_change=False,
                       enable_dependencies={'on_complete': ['host_record']},
                       disable_dependencies={'on_change': ['host_record']},
                       clear_dependencies={
                           'on_change': ['host_record', 'name', 'ip4_address']
                       },
                       should_cascade_disable_on_change=True,
                       should_cascade_clear_on_change=True)

    host_record = HostRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Host Record',
        required=True,
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'parent_zone': 'parent_zone',
            'host_record': 'host_record'
        },
        server_outputs={
            'on_complete': {
                'name': 'name',
                'addresses': 'ip4_address'
            }
        },
        server_side_output_method=get_host_records_endpoint,
        clear_below_on_change=False,
        enable_dependencies={
            'on_complete': ['submit', 'name', 'ip4_address', 'deploy_now']
        },
        disable_dependencies={
            'on_change': ['submit', 'name', 'ip4_address', 'deploy_now']
        },
        should_cascade_disable_on_change=True,
    )

    seperator = PlainHTML('<hr>')

    name = CustomStringField(label='New Host Name', required=True)

    ip4_address = CustomStringField(
        label=
        'IPv4 Address (multiple IPv4 addresses must be seperated by a comma)',
        required=True)

    deploy_now = CustomBooleanField(label='Deploy Now')

    submit = SubmitField(label='Update')
Beispiel #13
0
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the add_static_ip4_address workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'add_static_ip4_address'
    workflow_permission = 'add_static_ip4_address_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        enable_dependencies={'on_complete': ['ip4_address']},
        disable_dependencies={'on_change': ['ip4_address']},
        clear_dependencies={
            'on_change': ['ip4_address', 'view', 'mac_address', 'description']
        })

    ip4_address = IP4Address(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Address',
        required=True,
        inputs={
            'configuration': 'configuration',
            'address': 'ip4_address'
        },
        result_decorator=filter_unallocated,
        on_complete=['call_view'],
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        enable_dependencies={
            'on_complete': ['view', 'mac_address', 'description', 'submit']
        },
        disable_dependencies={
            'on_change': ['view', 'mac_address', 'description', 'submit']
        },
        display_message=True)

    mac_address = CustomStringField(label='MAC Address')

    description = CustomStringField(label='Description')

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                one_off=True,
                on_complete=['call_zone'],
                clear_below_on_change=False,
                should_cascade_disable_on_change=True,
                should_cascade_clear_on_change=True,
                enable_dependencies={'on_complete': ['zone']},
                disable_dependencies={'on_change': ['zone']},
                clear_dependencies={'on_change': ['zone']})

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                clear_below_on_change=False,
                should_cascade_disable_on_change=True,
                should_cascade_clear_on_change=True,
                enable_dependencies={'on_complete': ['hostname']},
                disable_dependencies={'on_change': ['hostname']},
                clear_dependencies={'on_change': ['hostname']})

    hostname = CustomStringField(label='Hostname')

    submit = SubmitField(label='Submit')
class GenericFormTemplate(GatewayForm):
    """Form to generate HTML and Javascript for the delete_host_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """

    workflow_name = "delete_host_record"
    workflow_permission = "delete_host_record_page"
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=["call_view"],
        enable_dependencies={"on_complete": ["view"]},
        disable_dependencies={"on_change": ["view"]},
        clear_dependencies={"on_change": ["view"]},
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="View",
        required=True,
        one_off=True,
        clear_below_on_change=False,
        enable_dependencies={"on_complete": ["parent_zone"]},
        disable_dependencies={"on_change": ["parent_zone"]},
        clear_dependencies={"on_change": ["parent_zone"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    parent_zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Zone",
        required=True,
        start_initialized=True,
        inputs={
            "zone": "parent_zone",
            "configuration": "configuration",
            "view": "view"
        },
        clear_below_on_change=False,
        enable_dependencies={"on_complete": ["host_record"]},
        disable_dependencies={"on_change": ["host_record"]},
        clear_dependencies={
            "on_change": ["host_record", "name", "ip4_address"]
        },
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    host_record = HostRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Host Record",
        required=True,
        inputs={
            "configuration": "configuration",
            "view": "view",
            "parent_zone": "parent_zone",
            "host_record": "host_record",
        },
        server_outputs={
            "on_complete": {
                "name": "name",
                "addresses": "ip4_address"
            }
        },
        server_side_output_method=get_host_records_endpoint,
        clear_below_on_change=False,
        enable_dependencies={
            "on_complete": ["submit", "name", "ip4_address", "deploy_now"]
        },
        disable_dependencies={
            "on_change": ["submit", "name", "ip4_address", "deploy_now"]
        },
    )

    separator = PlainHTML("<hr>")

    name = CustomStringField(label="Name", readonly=True)

    ip4_address = CustomStringField(label="IPv4 Address", readonly=True)

    deploy_now = CustomBooleanField(label="Deploy Now")

    submit = SubmitField(label="Delete")
class GenericFormTemplate(GatewayForm):
    """
    Generic form Template

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'add_next_available_dual_stack_host'
    workflow_permission = 'add_next_available_dual_stack_host_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        validators=[],
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_on_complete=['view'],
        clear_below_on_change=False
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='View',
        required=True,
        one_off=True,
        on_complete=['call_zone'],
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['zone']},
        disable_dependencies={'on_change': ['zone']},
        clear_dependencies={'on_change': ['zone']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Zone',
        required=True,
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['hostname', 'ip4_network', 'ip6_network']},
        disable_dependencies={'on_change': ['hostname', 'ip4_network', 'ip6_network']},
        clear_dependencies={'on_change': ['hostname', 'ip4_network', 'ip6_network']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True
    )

    hostname = CustomStringField(
        label='Hostname',
        required=True
    )

    ip4_network = IP4Network(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='IPv4 Network',
        required=True,
        one_off=False,
        is_disabled_on_start=False
    )

    ip6_network = IP6Network(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='IPv6 Network',
        required=True,
        one_off=False,
        enable_dependencies={'on_complete': ['submit']},
        disable_dependencies={'on_change': ['submit']},
        is_disabled_on_start=False
    )

    add_device = CustomBooleanField(
        label='Add Device',
        is_disabled_on_start=False
    )

    submit = SubmitField(label='Submit')

    # Button with JS to clear the form
    clear_button = PlainHTML('<button type="button" onclick="clearForm();" class="clearForm">Clear Form</button>')
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the delete_text_record_example workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'delete_alias_record_example'
    workflow_permission = 'delete_alias_record_example_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']})

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                on_complete=['call_zone'],
                enable_dependencies={'on_complete': ['zone']},
                disable_dependencies={'on_change': ['zone']},
                should_cascade_disable_on_change=True,
                clear_dependencies={'on_change': ['zone']},
                should_cascade_clear_on_change=True)

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                required=True,
                enable_dependencies={'on_complete': ['alias_record']},
                disable_dependencies={'on_change': ['alias_record']},
                should_cascade_disable_on_change=True,
                clear_dependencies={'on_change': ['alias_record']},
                should_cascade_clear_on_change=True)

    alias_record = AliasRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Alias Record',
        required=True,
        on_complete=['populate_alias_record_data'],
        enable_dependencies={
            'on_complete': ['name', 'linked_record', 'submit']
        },
        disable_dependencies={
            'on_change': ['name', 'linked_record', 'submit']
        },
        should_cascade_disable_on_change=True,
        clear_dependencies={'on_change': ['name', 'linked_record']},
        should_cascade_clear_on_change=True)

    name = CustomStringField(label='Name', readonly=True)

    linked_record = CustomStringField(label='Linked Record', readonly=True)

    submit = SubmitField(label='Delete')
class GenericFormTemplate(GatewayForm):
    """
    Generic form Template

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'unit_tests_example'
    workflow_permission = 'unit_tests_example_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        validators=[],
        is_disabled_on_start=False,
        on_complete=[],
        enable_on_complete=['email', 'password', 'ip_address'],
        clear_below_on_change=False)

    email = CustomStringField(label='Email',
                              default='*****@*****.**',
                              validators=[DataRequired(),
                                          Email()])

    password = PasswordField(label='Password',
                             default='abc',
                             validators=[DataRequired()])

    ip_address = IP4Address(workflow_name=workflow_name,
                            permissions=workflow_permission,
                            label='IP Address',
                            required=True,
                            inputs={
                                'configuration': 'configuration',
                                'address': 'ip_address'
                            },
                            result_decorator=None,
                            enable_on_complete=[
                                'mac_address', 'url', 'file',
                                'boolean_checked', 'boolean_unchecked',
                                'date_time', 'submit'
                            ])

    mac_address = CustomStringField(label='MAC Address',
                                    default='11:11:11:11:11:11',
                                    validators=[MacAddress()])

    url = StringField(label='URL',
                      default='http://www.example.com',
                      validators=[URL()])

    file = FileField(label='File')

    boolean_checked = BooleanField(label='Use for true or false things',
                                   default='checked')

    boolean_unchecked = BooleanField(label='default for field is unchecked')

    date_time = DateTimeField(label='Date and Time:',
                              default=datetime.datetime.now(),
                              format='%Y-%m-%d %H:%M:%S')

    submit = SubmitField(label='Submit')
Beispiel #18
0
class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'update_text_record_example'
    workflow_permission = 'update_text_record_example_page'
    configuration = Configuration(workflow_name=workflow_name,
                                  permissions=workflow_permission,
                                  label='Configuration',
                                  required=True,
                                  coerce=int,
                                  validators=[],
                                  is_disabled_on_start=False,
                                  on_complete=['call_view'],
                                  enable_on_complete=['view'])

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                on_complete=[],
                enable_on_complete=['parent_zone'])

    parent_zone = Zone(workflow_name=workflow_name,
                       permissions=workflow_permission,
                       label='Zone',
                       required=True,
                       start_initialized=True,
                       inputs={
                           'zone': 'parent_zone',
                           'configuration': 'configuration',
                           'view': 'view'
                       },
                       enable_on_complete=['text_record', 'search'])

    text_record = CustomStringField(label='Text Record')

    search = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        default='Search',
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'parent_zone': 'parent_zone',
            'name': 'text_record'
        },
        server_side_method=get_text_records_endpoint,
        message_field='search_message',
        on_click=['populate_txt_list'],
        enable_on_complete=['txt_filter', 'txt_list'])

    plain_0 = PlainHTML('<div id="search_message"></div>')

    txt_filter = CustomStringField(label='Filter', is_disabled_on_error=True)

    txt_list = FilteredSelectField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Text',
        size=12,
        filter_field='txt_filter',
        choices=[(0, '')],
        coerce=int,
        is_disabled_on_error=True,
        on_complete=['call_name_js', 'call_text'],
        enable_on_complete=['name', 'text', 'submit'])

    plain_1 = PlainHTML('<hr>')

    name = CustomStringField(label='New Name', is_disabled_on_error=True)

    text = CustomStringField(label='New Text',
                             inputs={'text': 'txt_list'},
                             is_disabled_on_error=True)

    submit = SubmitField(label='Update', render_kw={'disabled': True})
Beispiel #19
0
class GenericFormTemplate(GatewayForm):
    """Form to generate HTML and Javascript for the update_text_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """

    workflow_name = "update_text_record"
    workflow_permission = "update_text_record_page"
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=["call_view"],
        enable_dependencies={"on_complete": ["view"]},
        disable_dependencies={"on_change": ["view"]},
        clear_dependencies={"on_change": ["view"]},
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="View",
        required=True,
        one_off=True,
        clear_below_on_change=False,
        display_message=True,
        enable_dependencies={"on_complete": ["parent_zone"]},
        disable_dependencies={"on_change": ["parent_zone"]},
        clear_dependencies={"on_change": ["parent_zone"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    parent_zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Zone",
        required=True,
        start_initialized=True,
        display_message=True,
        inputs={"zone": "parent_zone", "configuration": "configuration", "view": "view"},
        clear_below_on_change=False,
        enable_dependencies={"on_complete": ["text_record", "search"]},
        disable_dependencies={"on_change": ["text_record", "search"]},
        clear_dependencies={"on_change": ["text_record", "search"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    text_record = CustomStringField(label="Text Record")

    search = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        default="Search",
        inputs={
            "configuration": "configuration",
            "view": "view",
            "parent_zone": "parent_zone",
            "name": "text_record",
        },
        server_side_method=get_text_records_endpoint,
        display_message=True,
        on_complete=["call_txt_list"],
        enable_dependencies={"on_complete": ["txt_filter", "txt_list"]},
        disable_dependencies={
            "on_change": ["txt_filter", "txt_list"],
            "on_click": ["txt_filter", "txt_list"],
        },
        clear_dependencies={
            "on_change": ["txt_filter", "txt_list"],
            "on_click": ["txt_filter", "txt_list"],
        },
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    txt_filter = CustomStringField(label="Filter", is_disabled_on_error=True)

    txt_list = FilteredSelectField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Text",
        size=12,
        filter_field="txt_filter",
        choices=[(0, "")],
        coerce=int,
        is_disabled_on_error=True,
        on_complete=["call_name_js", "call_text"],
        inputs={
            "configuration": "configuration",
            "view": "view",
            "parent_zone": "parent_zone",
            "name": "text_record",
        },
        clear_dependencies={"on_change": ["name", "text"]},
        server_side_method=get_text_records_endpoint,
        enable_dependencies={"on_complete": ["name", "text", "submit"]},
        disable_dependencies={"on_change": ["name", "text", "submit"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    plain_1 = PlainHTML("<hr>")

    name = CustomStringField(label="New Name", is_disabled_on_error=True)

    text = CustomStringField(
        label="New Text", inputs={"text": "txt_list"}, is_disabled_on_error=True
    )

    submit = CustomSubmitField(label="Update")
Beispiel #20
0
class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'update_alias_record_example'
    workflow_permission = 'update_alias_record_example_page'
    configuration = Configuration(workflow_name=workflow_name,
                                  permissions=workflow_permission,
                                  label='Configuration',
                                  required=True,
                                  coerce=int,
                                  validators=[],
                                  is_disabled_on_start=False,
                                  on_complete=['call_view'],
                                  enable_on_complete=['view'])

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                on_complete=['call_zone', 'call_linked_record_zone'],
                enable_on_complete=['zone'])

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                required=True,
                enable_on_complete=['alias_record'])

    alias_record = AliasRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Alias Record',
        required=True,
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'zone': 'zone',
            'alias_record': 'alias_record'
        },
        server_outputs={
            'alias_record_name': 'alias_name',
            'linked_record_zone': 'linked_record_zone',
            'linked_record_name': 'linked_record'
        },
        server_side_output_method=get_alias_records_endpoint,
        on_complete=['server_output_alias_record'],
        enable_on_complete=[
            'alias_name', 'linked_record_zone', 'linked_record', 'submit'
        ])

    alias_name = CustomStringField(label='New Alias Name', required=True)

    linked_record_zone = Zone(workflow_name=workflow_name,
                              permissions=workflow_permission,
                              label='Linked Record Zone',
                              required=True,
                              inputs={
                                  'configuration': 'configuration',
                                  'view': 'view',
                                  'zone': 'linked_record_zone'
                              },
                              clear_below_on_change=False)

    linked_record = CustomStringField(label='Linked Record', required=True)

    submit = SubmitField(label='Update')
class GenericFormTemplate(GatewayForm):
    """class used to structure all the elements on the page"""
    workflow_name = 'selective_deployment'
    workflow_permission = 'selective_deployment_page'

    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']})

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                clear_below_on_change=False,
                display_message=True,
                enable_dependencies={'on_complete': ['zone']},
                disable_dependencies={'on_change': ['zone']},
                clear_dependencies={'on_change': ['zone']},
                should_cascade_disable_on_change=True,
                should_cascade_clear_on_change=True)

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Zone',
        required=True,
        start_initialized=True,
        display_message=True,
        inputs={
            'zone': 'zone',
            'configuration': 'configuration',
            'view': 'view'
        },
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['search']},
        disable_dependencies={
            'on_change': ['search'],
            'on_click': ['search']
        },
        clear_dependencies={
            'on_change': ['search'],
            'on_click': ['search']
        },
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    search = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        default='Search Objects',
        inputs={
            'zone': 'zone',
            'view': 'view',
            'configuration': 'configuration'
        },
        server_side_method=find_objects_by_type_endpoint,
        display_message=True,
        label='SEARCH DNS',
        on_complete=['call_output_table'],
        enable_dependencies={'on_complete': ['deploy', 'output_table']},
        disable_dependencies={'on_change': ['deploy', 'output_table']},
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    output_table = TableField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='',
        data_function=raw_table_data,
        table_features={'lengthMenu': [10, 20, 30, 40, 50, 100, 500, 1000]})

    deploy = CustomButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Deploy',
        display_message=True,
    )
Beispiel #22
0
class GenericFormTemplate(GatewayForm):
    """
    Generic form Template

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'create_server_vro'
    workflow_permission = 'create_server_vro_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']}
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='View',
        required=True,
        one_off=True,
        on_complete=['call_zone'],
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['zone']},
        disable_dependencies={'on_change': ['zone']},
        clear_dependencies={'on_change': ['zone']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Zone',
        required=True,
        clear_below_on_change=False,
        enable_dependencies={'on_complete': ['ip4_network']},
        disable_dependencies={'on_change': ['ip4_network']},
        clear_dependencies={'on_change': ['ip4_network']},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True
    )

    ip4_network = IP4Network(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Network',
        required=True,
        one_off=False,
        enable_dependencies={'on_complete': ['mac_address', 'hostname', 'submit']},
        disable_dependencies={'on_change': ['mac_address', 'hostname', 'submit']},
        clear_dependencies={'on_change': ['mac_address', 'hostname', 'submit']},
        is_disabled_on_start=False
    )

    mac_address = CustomStringField(
        label='MAC Address',
        required=True,
        validators=[MacAddress()]
    )

    hostname = CustomStringField(
        label='Hostname',
        required=True
    )

    submit = SubmitField(label='Submit')
class GenericFormTemplate(GatewayForm):
    """Form to generate HTML and Javascript for the add_static_ip4_address workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """

    workflow_name = "add_static_ip4_address"
    workflow_permission = "add_static_ip4_address_page"
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        enable_dependencies={"on_complete": ["ip4_address"]},
        disable_dependencies={"on_change": ["ip4_address"]},
        clear_dependencies={
            "on_change": ["ip4_address", "view", "mac_address", "description"]
        },
    )

    ip4_address = IP4Address(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Address",
        required=True,
        inputs={
            "configuration": "configuration",
            "address": "ip4_address"
        },
        result_decorator=filter_unallocated,
        on_complete=["call_view"],
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        enable_dependencies={
            "on_complete": ["view", "mac_address", "description", "submit"]
        },
        disable_dependencies={
            "on_change": ["view", "mac_address", "description", "submit"]
        },
        display_message=True,
    )

    mac_address = CustomStringField(label="MAC Address")

    description = CustomStringField(label="Description")

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="View",
        one_off=True,
        on_complete=["call_zone"],
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
        enable_dependencies={"on_complete": ["zone"]},
        disable_dependencies={"on_change": ["zone"]},
        clear_dependencies={"on_change": ["zone"]},
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Zone",
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
        enable_dependencies={"on_complete": ["hostname"]},
        disable_dependencies={"on_change": ["hostname"]},
        clear_dependencies={"on_change": ["hostname"]},
    )

    hostname = CustomStringField(label="Hostname")

    submit = SubmitField(label="Submit")
class GenericFormTemplate(GatewayForm):
    """Form to generate HTML and Javascript for the update_alias_record workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """

    workflow_name = "update_alias_record"
    workflow_permission = "update_alias_record_page"
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        is_disabled_on_start=False,
        on_complete=["call_view"],
        enable_dependencies={"on_complete": ["view"]},
        disable_dependencies={"on_change": ["view"]},
        clear_dependencies={"on_change": ["view"]},
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="View",
        required=True,
        one_off=True,
        on_complete=["call_zone", "call_linked_record_zone"],
        enable_dependencies={"on_complete": ["zone"]},
        disable_dependencies={"on_change": ["zone"]},
        should_cascade_disable_on_change=True,
        clear_dependencies={"on_change": ["zone"]},
        should_cascade_clear_on_change=True,
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Zone",
        required=True,
        enable_dependencies={"on_complete": ["alias_record"]},
        disable_dependencies={"on_change": ["alias_record"]},
        should_cascade_disable_on_change=True,
        clear_dependencies={"on_change": ["alias_record"]},
        should_cascade_clear_on_change=True,
    )

    alias_record = AliasRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Alias Record",
        required=True,
        inputs={
            "configuration": "configuration",
            "view": "view",
            "zone": "zone",
            "alias_record": "alias_record",
        },
        server_outputs={
            "on_complete": {
                "alias_record_name": "alias_name",
                "linked_record_zone": "linked_record_zone",
                "linked_record_name": "linked_record",
            }
        },
        server_side_output_method=get_alias_records_endpoint,
        enable_dependencies={
            "on_complete":
            ["alias_name", "linked_record_zone", "linked_record", "submit"]
        },
        disable_dependencies={
            "on_change":
            ["alias_name", "linked_record_zone", "linked_record", "submit"]
        },
        should_cascade_disable_on_change=True,
        clear_dependencies={
            "on_change": ["alias_name", "linked_record_zone", "linked_record"]
        },
        should_cascade_clear_on_change=True,
    )

    alias_name = CustomStringField(label="New Alias Name", required=True)

    linked_record_zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Linked Record Zone",
        required=True,
        inputs={
            "configuration": "configuration",
            "view": "view",
            "zone": "linked_record_zone"
        },
        clear_below_on_change=False,
    )

    linked_record = CustomStringField(label="Linked Record", required=True)

    submit = SubmitField(label="Update")
class GenericFormTemplate(GatewayForm):
    # When updating the form, remember to make the corresponding changes to the workflow pages
    workflow_name = 'update_host_record_example'
    workflow_permission = 'update_host_record_example_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        validators=[],
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_on_complete=['view']
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='View',
        required=True,
        one_off=True,
        on_complete=[],
        enable_on_complete=['parent_zone']
    )

    parent_zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Zone',
        required=True,
        start_initialized=True,
        inputs={'zone': 'parent_zone', 'configuration': 'configuration', 'view': 'view'},
        enable_on_complete=['host_record']
    )

    host_record = HostRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Host Record',
        required=True,
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'parent_zone': 'parent_zone',
            'host_record': 'host_record'
        },
        on_complete=['server_output_host_record'],
        server_outputs={'name': 'name', 'addresses': 'ip4_address'},
        server_side_output_method=get_host_records_endpoint,
        enable_on_complete=['submit', 'name', 'ip4_address']
    )

    seperator = PlainHTML('<hr>')

    name = CustomStringField(
        label='New Host Name',
        required=True
    )

    ip4_address = CustomStringField(
        label='IP4 Address (multiple IP4 addresses must be seperated by a comma)',
        required=True
    )

    submit = SubmitField(label='Update')
class GenericFormTemplate(GatewayForm):
    """class used to structure all the elements on the page"""

    workflow_name = "selective_deployment"
    workflow_permission = "selective_deployment_page"

    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Configuration",
        required=True,
        coerce=int,
        clear_below_on_change=False,
        is_disabled_on_start=False,
        on_complete=["call_view"],
        enable_dependencies={"on_complete": ["view"]},
        disable_dependencies={"on_change": ["view"]},
        clear_dependencies={"on_change": ["view"]},
    )

    view = View(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="View",
        required=True,
        one_off=True,
        clear_below_on_change=False,
        display_message=True,
        enable_dependencies={"on_complete": ["zone"]},
        disable_dependencies={"on_change": ["zone"]},
        clear_dependencies={"on_change": ["zone"]},
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    zone = Zone(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Zone",
        required=True,
        start_initialized=True,
        display_message=True,
        inputs={
            "zone": "zone",
            "configuration": "configuration",
            "view": "view"
        },
        clear_below_on_change=False,
        enable_dependencies={"on_complete": ["search"]},
        disable_dependencies={
            "on_change": ["search"],
            "on_click": ["search"]
        },
        clear_dependencies={
            "on_change": ["search"],
            "on_click": ["search"]
        },
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    search = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        default="Search Objects",
        inputs={
            "zone": "zone",
            "view": "view",
            "configuration": "configuration"
        },
        server_side_method=find_objects_by_type_endpoint,
        display_message=True,
        label="SEARCH DNS",
        on_complete=["call_output_table"],
        enable_dependencies={"on_complete": ["deploy", "output_table"]},
        disable_dependencies={"on_change": ["deploy", "output_table"]},
        clear_below_on_change=False,
        should_cascade_disable_on_change=True,
        should_cascade_clear_on_change=True,
    )

    output_table = TableField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="",
        data_function=raw_table_data,
        table_features={"lengthMenu": [10, 20, 30, 40, 50, 100, 500, 1000]},
    )

    deploy = CustomButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label="Deploy",
        display_message=True,
    )
Beispiel #27
0
class GenericFormTemplate(GatewayForm):
    """ Form to generate HTML and Javascript for the update_alias_record_example workflow

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'update_alias_record_example'
    workflow_permission = 'update_alias_record_example_page'
    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Configuration',
        required=True,
        coerce=int,
        is_disabled_on_start=False,
        on_complete=['call_view'],
        enable_dependencies={'on_complete': ['view']},
        disable_dependencies={'on_change': ['view']},
        clear_dependencies={'on_change': ['view']})

    view = View(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='View',
                required=True,
                one_off=True,
                on_complete=['call_zone', 'call_linked_record_zone'],
                enable_dependencies={'on_complete': ['zone']},
                disable_dependencies={'on_change': ['zone']},
                should_cascade_disable_on_change=True,
                clear_dependencies={'on_change': ['zone']},
                should_cascade_clear_on_change=True)

    zone = Zone(workflow_name=workflow_name,
                permissions=workflow_permission,
                label='Zone',
                required=True,
                enable_dependencies={'on_complete': ['alias_record']},
                disable_dependencies={'on_change': ['alias_record']},
                should_cascade_disable_on_change=True,
                clear_dependencies={'on_change': ['alias_record']},
                should_cascade_clear_on_change=True)

    alias_record = AliasRecord(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='Alias Record',
        required=True,
        inputs={
            'configuration': 'configuration',
            'view': 'view',
            'zone': 'zone',
            'alias_record': 'alias_record'
        },
        server_outputs={
            'on_complete': {
                'alias_record_name': 'alias_name',
                'linked_record_zone': 'linked_record_zone',
                'linked_record_name': 'linked_record'
            }
        },
        server_side_output_method=get_alias_records_endpoint,
        enable_dependencies={
            'on_complete':
            ['alias_name', 'linked_record_zone', 'linked_record', 'submit']
        },
        disable_dependencies={
            'on_change':
            ['alias_name', 'linked_record_zone', 'linked_record', 'submit']
        },
        should_cascade_disable_on_change=True,
        clear_dependencies={
            'on_change': ['alias_name', 'linked_record_zone', 'linked_record']
        },
        should_cascade_clear_on_change=True)

    alias_name = CustomStringField(label='New Alias Name', required=True)

    linked_record_zone = Zone(workflow_name=workflow_name,
                              permissions=workflow_permission,
                              label='Linked Record Zone',
                              required=True,
                              inputs={
                                  'configuration': 'configuration',
                                  'view': 'view',
                                  'zone': 'linked_record_zone'
                              },
                              clear_below_on_change=False)

    linked_record = CustomStringField(label='Linked Record', required=True)

    submit = SubmitField(label='Update')
class GenericFormTemplate(GatewayForm):
    """
    Cisco ACI form

    Note:
        When updating the form, remember to make the corresponding changes to the workflow pages
    """
    workflow_name = 'cisco_aci'
    workflow_permission = 'cisco_aci_page'

    apic_ip = CustomStringField(
        label='APIC IP',
        required=True,
        default='',
        validators=[DataRequired()],
        is_disabled_on_start=False,
    )

    apic_username = CustomStringField(
        label='APIC USERNAME',
        default='',
        required=True,
        validators=[DataRequired()],
        is_disabled_on_start=False,
    )

    apic_password = CustomPasswordField(
        label='APIC PASSWORD',
        default='abc',
        validators=[DataRequired()],
        is_disabled_on_start=False,
    )

    optional = PlainHTML(
        '<hr/><h4>OPTIONAL</h4><p>Import ACI Fabric only if you wish to import APIC, SPINE, and'
        ' LEAF devices to the selected BAM configuration.</p><br/>')

    import_devices_checkbox = CustomBooleanField(
        label='Import ACI Fabric Devices to',
        on_checked=['enable_configuration'],
        on_unchecked=['disable_configuration', 'disable_import_fabric'],
        is_disabled_on_start=False,
    )

    configuration = Configuration(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        coerce=int,
        label='',
        validators=[],
        enable_dependencies={'on_complete': ['import_fabric']},
        disable_dependencies={'on_change': ['import_fabric']},
        clear_below_on_change=False,
    )

    import_fabric = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='IMPORT FABRIC',
        default='IMPORT',
        server_side_method=add_fabric,
        display_message=True,
    )

    html = PlainHTML('<br/><br/><hr/>')

    discover = CustomSearchButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='DISCOVER TENANTS',
        is_disabled_on_start=False,
        default='Search',
        on_complete=[
            'call_output_table', 'add_checkall_button',
            'add_on_page_change_listener'
        ],
        server_side_method=get_tenants,
        display_message=True,
    )

    output_table = TableField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='',
        data_function=raw_table_data,
        is_disabled_on_start=False,
    )

    import_tenants = SimpleButtonField(
        workflow_name=workflow_name,
        permissions=workflow_permission,
        label='IMPORT INFRASTRUCTURE',
        is_disabled_on_start=False,
        default='Search',
    )