#
# Copyright (c) 2013 Big Switch Networks, Inc.
#
# Licensed under the Eclipse Public License, Version 1.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
#      http://www.eclipse.org/legal/epl-v10.html
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied. See the License for the specific language governing
# permissions and limitations under the License.
#

import django.views.generic.simple, os, coreui.models
from django.conf.urls.defaults import *
from django.contrib import admin
from apploader import AppLoader

admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^sdncon/', include('sdncon.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    #(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    ###################################
    # Views for the web UI
    ###################################
    (r'^$', 'sdncon.ui.views.index'),
    (r'ui/show_switch', 'sdncon.ui.views.show_switch'),
    (r'ui/show_host', 'sdncon.ui.views.show_host'),
    (r'ui/show_link', 'sdncon.ui.views.show_link'),
    (r'ui/show_tunnel', 'sdncon.ui.views.show_tunnel'),
    (r'ui/build_topology', 'sdncon.ui.views.build_topology'),
    
    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),
    (r'accounts/login/$', 'django.contrib.auth.views.login'),
    (r'logout/$', 'django.contrib.auth.views.logout'),
    (r'password_change/$', 'django.contrib.auth.views.password_change'),
    (r'password_change_done/$', 'django.contrib.auth.views.password_change_done'),
    (r'token/?$', 'sdncon.clusterAdmin.views.token_view'),
    (r'token_generate/?$', 'sdncon.clusterAdmin.views.token_generate'),

    ###################################
    # Views that implement the REST API
    ###################################
    (r'^rest/v1/data/?$', 'sdncon.rest.views.do_user_data_list'),
    (r'^rest/v1/data/(?P<name>[A-Za-z0-9_:./=;\-]+)/$', 'sdncon.rest.views.do_user_data'),

    # APIs to get tenant info and build type
    (r'^rest/v1/customer/?$', 'sdncon.clusterAdmin.views.session_clusterAdmin'),
    (r'^rest/v1/personality/?$', 'sdncon.clusterAdmin.views.get_node_personality'),

    # REST API to access statistics counters from sdnplatform
    (r'^rest/v1/realtimestats/counter/categories/(?P<dpid>[A-Za-z0-9_:.\-]+)/(?P<stattype>[A-Za-z0-9_:.\-]+)/(?P<layer>[0-9])/?$', 'sdncon.rest.views.do_sdnplatform_counter_categories'),
    (r'^rest/v1/realtimestats/counter/(?P<stattype>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.rest.views.do_sdnplatform_realtimestats'),
    (r'^rest/v1/realtimestats/counter/(?P<dpid>[A-Za-z0-9_:.\-]+)/(?P<stattype>[A-Za-z]+)/?$', 'sdncon.rest.views.do_sdnplatform_realtimestats'),
    (r'^rest/v1/realtimestats/(?P<stattype>[A-Za-z]+)/(?P<dpid>[A-Za-z0-9_:./\-]+)/?$', 'sdncon.rest.views.do_realtimestats'),
    (r'^rest/v1/controller/stats/(?P<stattype>[A-Za-z]+)/?$', 'sdncon.rest.views.do_controller_stats'),
    (r'^rest/v1/controller/storage/tables/?$', 'sdncon.rest.views.do_controller_storage_table_list'),

    # REST API VNS/device information
    (r'^rest/v1/device', 'sdncon.rest.views.do_device'),
    (r'^rest/v1/switches', 'sdncon.rest.views.do_switches'),
    (r'^rest/v1/links', 'sdncon.rest.views.do_links'),
    (r'^rest/v1/vns/device-interface', 'sdncon.rest.views.do_vns_device_interface'),
    (r'^rest/v1/vns/interface', 'sdncon.rest.views.do_vns_interface'),
    (r'^rest/v1/vns/realtimestats/flow/(?P<vnsName>[A-Za-z0-9_:.|\-]+)/?$', 'sdncon.rest.views.do_vns_realtimestats_flow', {'category': 'vns'}),
    (r'^rest/v1/vns', 'sdncon.rest.views.do_vns'),

    # REST API to access realtime status from sdnplatform
    (r'^rest/v1/realtimestatus/network/tunnelstatus/all/all/?$', 'sdncon.rest.views.do_topology_tunnel_status'),
    (r'^rest/v1/realtimestatus/network/tunnelstatus/(?P<srcdpid>[A-Za-z0-9_:.\-]+)/(?P<dstdpid>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.rest.views.do_topology_tunnel_status'),
    (r'^rest/v1/realtimestatus/network/tunnelverify/(?P<srcdpid>[A-Za-z0-9_:.\-]+)/(?P<dstdpid>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.rest.views.do_topology_tunnel_verify'),
    (r'^rest/v1/realtimestatus/network/(?P<subcategory>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.rest.views.do_sdnplatform_realtimestatus', {'category': 'network'}),

    # REST API for testing with Explain Packet in realtime
    (r'^rest/v1/realtimetest/network/(?P<subcategory>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.rest.views.do_sdnplatform_realtimetest', {'category': 'network'}),
    
    # REST API for accessing controller system information
    (r'^rest/v1/system/version/?$', 'sdncon.rest.views.do_system_version', {}),
    (r'^rest/v1/system/interfaces/?$', 'sdncon.rest.views.do_system_inet4_interfaces', {}),
    (r'^rest/v1/system/uptime/?$', 'sdncon.rest.views.do_system_uptime', {}),
    (r'^rest/v1/system/clock/utc/?$', 'sdncon.rest.views.do_system_clock', {'local': False}),
    (r'^rest/v1/system/clock/local/?$', 'sdncon.rest.views.do_system_clock', {'local': True}),
    (r'^rest/v1/system/timezones/(?P<list_type>[A-Za-z0-9_\-]+)/?$', 'sdncon.rest.views.do_system_time_zone_strings'),
    (r'^rest/v1/system/controller/?$', 'sdncon.rest.views.do_local_controller_id'),
    (r'^rest/v1/system/ha/role/?$', 'sdncon.rest.views.do_local_ha_role'),
    (r'^rest/v1/system/ha/failback/?$', 'sdncon.rest.views.do_ha_failback'),
    (r'^rest/v1/system/ha/provision/?$', 'sdncon.rest.views.do_ha_provision'),
    (r'^rest/v1/system/ha/clustername/?$', 'sdncon.rest.views.do_clustername'),
    (r'^rest/v1/system/ha/decommission/?$', 'sdncon.rest.views.do_decommission'),
    (r'^rest/v1/system/ha/decommission-internal/?$', 'sdncon.rest.views.do_decommission_internal'),
    (r'^rest/v1/system/check-config/?$', 'sdncon.rest.views.do_check_config'),
    (r'^rest/v1/system/reload/?$', 'sdncon.rest.views.do_reload'),
    (r'^rest/v1/system/resetbsc/?$', 'sdncon.rest.views.do_resetbsc'),
    (r'^rest/v1/system/delete-images-passwd/?$', 'sdncon.rest.views.do_delete_images_passwd'),
    (r'^rest/v1/system/upload-data/?$', 'sdncon.rest.views.do_upload_data'),
    (r'^rest/v1/system/log/$', 'sdncon.rest.views.do_system_log_list'),
    (r'^rest/v1/system/log/(?P<log_name>[A-Za-z0-9_\-]+)$', 'sdncon.rest.views.do_system_log'),
    
    # REST API for upgrades
    (r'^rest/v1/system/upgrade/extract-image-manifest/?$', 'sdncon.rest.views.do_extract_upgrade_pkg_manifest'),
    (r'^rest/v1/system/upgrade/image-name/?$', 'sdncon.rest.views.do_get_upgrade_pkg'),
    (r'^rest/v1/system/upgrade/execute-upgrade-step/?$', 'sdncon.rest.views.do_execute_upgrade_step'),
    (r'^rest/v1/system/upgrade/cleanup-old-images/?$', 'sdncon.rest.views.do_cleanup_old_pkgs'),
    (r'^rest/v1/system/upgrade/abort/?$', 'sdncon.rest.views.do_abort_upgrade'),
   
     # REST API for config rollback
    (r'^rest/v1/system/rollback/config/?$', 'sdncon.rest.views.do_config_rollback'),
    (r'^rest/v1/system/rollback/diffconfig/?$', 'sdncon.rest.views.do_diff_config'),

    # Views for the stats REST API
    (r'^rest/v1/stats/metadata/(?P<cluster>[A-Za-z0-9_:.\-]+)(/(?P<stats_type>[A-Za-z0-9_\-]+))?/?$', 'sdncon.stats.views.do_get_stats_metadata'),
    (r'^rest/v1/stats/index/(?P<cluster>[A-Za-z0-9_:.\-]+)/(?P<target_type>[A-Za-z0-9_\-]+)/(?P<target_id>[A-Za-z0-9_\:\.\-]+)(/(?P<stats_type>[A-Za-z0-9_\-]+))?/?$', 'sdncon.stats.views.do_get_stats_type_index'),
    (r'^rest/v1/stats/target/(?P<cluster>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.stats.views.do_get_stats_target_types'),
    (r'^rest/v1/stats/target/(?P<cluster>[A-Za-z0-9_:.\-]+)/(?P<target_type>[A-Za-z0-9_\-]+)/?$', 'sdncon.stats.views.do_get_stats_targets'),
    (r'^rest/v1/stats/data/(?P<cluster>[A-Za-z0-9_:.\-]+)/(?P<target_type>[A-Za-z0-9_\-]+)/(?P<target_id>[A-Za-z0-9_\:\.\-]+)/(?P<stats_type>[A-Za-z0-9_\-]+)/?$', 'sdncon.stats.views.do_get_stats'),
    (r'^rest/v1/stats/data/(?P<cluster>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.stats.views.do_put_stats'),
    (r'^rest/v1/events/data/(?P<cluster>[A-Za-z0-9_:.\-]+)/(?P<node_id>[A-Za-z0-9_\.\-]+)/?$', 'sdncon.stats.views.do_get_events'),
    (r'^rest/v1/events/data/(?P<cluster>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.stats.views.do_put_events'),
    
    # Views for the models
    (r'^rest/v1/model/(?P<model_name>[A-Za-z0-9_\-]+)(/(?P<id>[A-Za-z0-9_:.\-|]+))?/?$', 'sdncon.rest.views.do_instance'),
    # Get the model list
    (r'^rest/v1/model/?$', 'sdncon.rest.views.do_model_list'),

    # Views for the synthesized table
    (r'^rest/v1/synthetic/(?P<model_name>[A-Za-z0-9_\-]+)(/(?P<id>[A-Za-z0-9_:.\-|]+))?/?$', 'sdncon.rest.views.do_synthetic_instance'),


    # REST API for packet tracing
    (r'^rest/v1/packettrace/?$', 'sdncon.rest.views.do_packettrace'),

    # Views for the coreui (base layout and javascript)
    (r'^coreui/static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.dirname(__file__)+'/coreui','static')}),
    (r'^coreui/img/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.dirname(__file__)+'/coreui','img')}),

    # REST APIs for Performance Monitoring information of SDNPlatform and SDNPlatform
    (r'^rest/v1/performance-monitor/(?P<type>[A-Za-z0-9_.\-]+)/?$', 'sdncon.rest.views.do_sdnplatform_performance_monitor', {'category':'performance-monitor'}),

    # REST APIs for Internal debugging information of SDNPlatform and SDNPlatform
    (r'^rest/v1/internal-debugs/(?P<component>[A-Za-z0-9\-]+)/(?P<query>[A-Za-z0-9=:\-]+)?/?$', 'sdncon.rest.views.do_sdnplatform_internal_debugs', {'category':'internal-debugs'}),

    # REST APIs for Event History from SDNPlatform and SDNPlatform
    (r'^rest/v1/event-history/(?P<evHistName>[A-Za-z0-9\-]+)/(?P<count>[0-9]+)?/?$', 'sdncon.rest.views.do_sdnplatform_event_history', {'category':'event-history'}),

    # REST APIs for displaying the content of Flow Cache in real-time
    # applName = Application Name (e.g. vns)
    # applInstName = Application Instance Name (e.g. name of the vns or "all")
    (r'^rest/v1/flow-cache/(?P<applName>[A-Za-z0-9\-]+)/(?P<applInstName>[A-Za-z0-9:.|\-]+)/(?P<queryType>[A-Za-z0-9\-]+)?/?$', 'sdncon.rest.views.do_flow_cache', {'category':'flow-cache'}),
    #(r'^rest/v1/flow-cache/(?P<applName>[A-Za-z0-9\-]+)/(?P<applInstName>[A-Za-z0-9:.|\-]+)/(?P<queryType>[A-Za-z0-9\-]+)?/?$', 'sdncon.rest.views.do_local', { 'url' : [ 'flow-cache' ], }),

    # REST APIs for Tunnel manager state from SDNPlatform
    (r'^rest/v1/tunnel-manager/(?P<dpid>[A-Za-z0-9_:.\-]+)/?$', 'sdncon.rest.views.do_sdnplatform_tunnel_manager'),

    # REST APIs for controller summary statistics 
    (r'^rest/v1/controller/summary$', 'sdncon.rest.views.do_sdnplatform_controller_summary'),

)

