"""
WSGI middleware for OpenStack backup jobs API.
"""

from raksha.api import extensions
from raksha.api import versions
import raksha.api
from raksha.openstack.common import log as logging
from raksha.api.v1 import backupjobs
from raksha.api.v1 import backupjobruns

LOG = logging.getLogger(__name__)


class APIRouter(raksha.api.APIRouter):
    """
    Routes requests on the OpenStack API to the appropriate controller
    and method.
    """
    ExtensionManager = extensions.ExtensionManager

    def _setup_routes(self, mapper, ext_mgr):
        self.resources['versions'] = versions.create_resource()
        mapper.connect("versions", "/",
                       controller=self.resources['versions'],
                       action='show')

        mapper.redirect("", "/")

        self.resources['backupjobs'] = backupjobs.create_resource()
        mapper.resource("backupjob", "backupjobs",
                        controller=self.resources['backupjobs'],
                        collection={'detail': 'GET'},
                        member={'action': 'POST'})
        
        mapper.connect("execute",
                       "/{project_id}/backupjobs/{id}",
                       controller=self.resources['backupjobs'],
                       action='execute',
                       conditions={"method": ['POST']})

        self.resources['backupjobruns'] = backupjobruns.create_resource(ext_mgr)
        mapper.resource("backupjobrun", "backupjobruns",
                        controller=self.resources['backupjobruns'],
                        collection={'detail': 'GET'},
                        member={'action': 'POST'})  
        
        mapper.connect("restore",
               "/{project_id}/backupjobruns/{id}",
               controller=self.resources['backupjobruns'],
               action='restore',
               conditions={"method": ['POST']})      