[Kimchi-devel] [PATCH V3 14/34] Use plugin relative URLs

Lucio Correia luciojhc at linux.vnet.ibm.com
Wed Jul 8 19:17:46 UTC 2015


Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
Signed-off-by: Gustavo Y. Ribeiro <gyr at linux.vnet.ibm.com>
---
 plugins/kimchi/API.json                            |   12 +-
 plugins/kimchi/mockmodel.py                        |    8 +-
 plugins/kimchi/model/debugreports.py               |    7 +-
 plugins/kimchi/model/host.py                       |    4 +-
 plugins/kimchi/model/networks.py                   |    4 +-
 plugins/kimchi/model/storagepools.py               |    7 +-
 plugins/kimchi/model/storagevolumes.py             |    4 +-
 plugins/kimchi/model/vms.py                        |   11 +-
 plugins/kimchi/model/vmsnapshots.py                |    4 +-
 plugins/kimchi/osinfo.py                           |   14 +-
 plugins/kimchi/screenshot.py                       |    2 +-
 plugins/kimchi/tests/test_authorization.py         |   56 ++--
 plugins/kimchi/tests/test_exception.py             |   12 +-
 plugins/kimchi/tests/test_host.py                  |   47 ++-
 plugins/kimchi/tests/test_mock_network.py          |    2 +-
 plugins/kimchi/tests/test_mock_storagepool.py      |   10 +-
 plugins/kimchi/tests/test_mock_storagevolume.py    |    8 +-
 plugins/kimchi/tests/test_mockmodel.py             |   21 +-
 plugins/kimchi/tests/test_model.py                 |   45 ++-
 plugins/kimchi/tests/test_model_network.py         |   14 +-
 plugins/kimchi/tests/test_model_storagepool.py     |   14 +-
 plugins/kimchi/tests/test_model_storagevolume.py   |   15 +-
 plugins/kimchi/tests/test_rest.py                  |  454 ++++++++++----------
 plugins/kimchi/tests/test_server.py                |   34 +-
 plugins/kimchi/tests/test_template.py              |   76 ++--
 plugins/kimchi/ui/css/theme-default/guest-edit.css |    6 +-
 plugins/kimchi/ui/css/theme-default/host.css       |    4 +-
 plugins/kimchi/ui/css/theme-default/list.css       |    2 +-
 plugins/kimchi/ui/css/theme-default/network.css    |    4 +-
 .../kimchi/ui/css/theme-default/report-rename.css  |    2 +-
 plugins/kimchi/ui/css/theme-default/storage.css    |    2 +-
 .../kimchi/ui/css/theme-default/template_add.css   |    6 +-
 plugins/kimchi/ui/js/src/kimchi.api.js             |  193 ++++-----
 plugins/kimchi/ui/js/src/kimchi.guest_add_main.js  |    2 +-
 plugins/kimchi/ui/js/src/kimchi.guest_edit_main.js |    6 +-
 plugins/kimchi/ui/js/src/kimchi.guest_main.js      |   12 +-
 .../kimchi/ui/js/src/kimchi.guest_media_main.js    |    2 +-
 plugins/kimchi/ui/js/src/kimchi.host.js            |   14 +-
 plugins/kimchi/ui/js/src/kimchi.storage_main.js    |    6 +-
 .../kimchi/ui/js/src/kimchi.template_edit_main.js  |    2 +-
 plugins/kimchi/ui/js/src/kimchi.template_main.js   |    8 +-
 plugins/kimchi/ui/pages/guest-add.html.tmpl        |    2 +-
 plugins/kimchi/ui/pages/guest.html.tmpl            |    2 +-
 plugins/kimchi/ui/pages/storagepool-add.html.tmpl  |    2 +-
 plugins/kimchi/ui/pages/tabs/storage.html.tmpl     |    2 +-
 plugins/kimchi/ui/pages/template-add.html.tmpl     |    2 +-
 plugins/sample/ui/js/util.js                       |    2 +-
 ui/pages/error.html.tmpl                           |    4 +-
 48 files changed, 604 insertions(+), 568 deletions(-)

diff --git a/plugins/kimchi/API.json b/plugins/kimchi/API.json
index e8da7d9..f1f58ff 100644
--- a/plugins/kimchi/API.json
+++ b/plugins/kimchi/API.json
@@ -257,14 +257,14 @@
                 "template": {
                     "description": "The URI of a template to use when building a VM",
                     "type": "string",
-                    "pattern": "^/templates/(.*?)/?$",
+                    "pattern": "^/plugins/kimchi/templates/(.*?)/?$",
                     "required": true,
                     "error": "KCHVM0012E"
                 },
                 "storagepool": {
                     "description": "Assign a specefic Storage Pool to the new VM",
                     "type": "string",
-                    "pattern": "^/storagepools/[^/]+/?$",
+                    "pattern": "^/plugins/kimchi/storagepools/[^/]+/?$",
                     "error": "KCHVM0013E"
                 },
                 "graphics": { "$ref": "#/kimchitype/graphics" }
@@ -428,7 +428,7 @@
                 "icon": {
                     "description": "The template icon path",
                     "type": "string",
-                    "pattern": "^images/",
+                    "pattern": "^/plugins/kimchi/images/",
                     "error": "KCHTMPL0009E"
                 },
                 "os_distro": {
@@ -493,7 +493,7 @@
                 "storagepool": {
                     "description": "Location of the storage pool",
                     "type": "string",
-                    "pattern": "^/storagepools/[^/]+/?$",
+                    "pattern": "^/plugins/kimchi/storagepools/[^/]+/?$",
                     "error": "KCHTMPL0015E"
                 },
                 "networks": {
@@ -600,7 +600,7 @@
                 "icon": {
                     "description": "The template icon path",
                     "type": "string",
-                    "pattern": "^images/",
+                    "pattern": "^/plugins/kimchi/images/",
                     "error": "KCHTMPL0009E"
                 },
                 "os_distro": {
@@ -664,7 +664,7 @@
                 "storagepool": {
                     "description": "Location of the storage pool",
                     "type": "string",
-                    "pattern": "^/storagepools/[^/]+/?$",
+                    "pattern": "^/plugins/kimchi/storagepools/[^/]+/?$",
                     "error": "KCHTMPL0015E"
                 },
                 "networks": {
diff --git a/plugins/kimchi/mockmodel.py b/plugins/kimchi/mockmodel.py
index 88eb033..d51ab9e 100644
--- a/plugins/kimchi/mockmodel.py
+++ b/plugins/kimchi/mockmodel.py
@@ -49,7 +49,7 @@ from wok.xmlutils.utils import xml_item_update
 
 
 fake_user = {'root': 'letmein!'}
-mockmodel_defaults = {'storagepool': '/storagepools/default-pool',
+mockmodel_defaults = {'storagepool': '/plugins/kimchi/storagepools/default-pool',
                       'domain': 'test', 'arch': 'i686'}
 
 
@@ -246,7 +246,7 @@ class MockModel(Model):
         return MockModel._libvirt_get_vol_path(pool, vol)
 
     def _gen_debugreport_file(self, name):
-        return add_task('/debugreports/%s' % name, self._create_log,
+        return add_task('/plugins/kimchi/debugreports/%s' % name, self._create_log,
                         self.objstore, name)
 
     def _create_log(self, cb, name):
@@ -355,7 +355,7 @@ class MockModel(Model):
         return self._mock_swupdate.pkgs[pkg_name]
 
     def _mock_host_swupdate(self, args=None):
-        task_id = add_task('/host/swupdate', self._mock_swupdate.doUpdate,
+        task_id = add_task('/plugins/kimchi/host/swupdate', self._mock_swupdate.doUpdate,
                            self.objstore)
         return self.task_lookup(task_id)
 
@@ -407,7 +407,7 @@ class MockModel(Model):
     def _mock_vmsnapshots_create(self, vm_name, params):
         name = params.get('name', unicode(int(time.time())))
         params = {'vm_name': vm_name, 'name': name}
-        taskid = add_task(u'/vms/%s/snapshots/%s' % (vm_name, name),
+        taskid = add_task(u'/plugins/kimchi/vms/%s/snapshots/%s' % (vm_name, name),
                           self._vmsnapshots_create_task, self.objstore, params)
         return self.task_lookup(taskid)
 
diff --git a/plugins/kimchi/model/debugreports.py b/plugins/kimchi/model/debugreports.py
index ea5853d..aff2152 100644
--- a/plugins/kimchi/model/debugreports.py
+++ b/plugins/kimchi/model/debugreports.py
@@ -62,8 +62,8 @@ class DebugReportsModel(object):
         gen_cmd = self.get_system_report_tool()
 
         if gen_cmd is not None:
-            return add_task('/debugreports/%s' % name, gen_cmd, self.objstore,
-                            name)
+            return add_task('/plugins/kimchi/debugreports/%s' % name, gen_cmd,
+                            self.objstore, name)
 
         raise OperationFailed("KCHDR0002E")
 
@@ -172,7 +172,8 @@ class DebugReportModel(object):
         ctime = os.stat(file_target).st_mtime
         ctime = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime(ctime))
         file_target = os.path.split(file_target)[-1]
-        file_target = os.path.join("/data/debugreports", file_target)
+        file_target = os.path.join("plugins/kimchi/data/debugreports",
+                                   file_target)
         return {'uri': file_target,
                 'ctime': ctime}
 
diff --git a/plugins/kimchi/model/host.py b/plugins/kimchi/model/host.py
index 2a78a88..09b0a09 100644
--- a/plugins/kimchi/model/host.py
+++ b/plugins/kimchi/model/host.py
@@ -132,8 +132,8 @@ class HostModel(object):
             raise OperationFailed('KCHPKGUPD0001E')
 
         wok_log.debug('Host is going to be updated.')
-        taskid = add_task('/host/swupdate', swupdate.doUpdate, self.objstore,
-                          None)
+        taskid = add_task('/plugins/kimchi/host/swupdate', swupdate.doUpdate,
+                          self.objstore, None)
         return self.task.lookup(taskid)
 
     def shutdown(self, args=None):
diff --git a/plugins/kimchi/model/networks.py b/plugins/kimchi/model/networks.py
index 594bfca..3723e4c 100644
--- a/plugins/kimchi/model/networks.py
+++ b/plugins/kimchi/model/networks.py
@@ -27,7 +27,7 @@ from xml.sax.saxutils import escape
 
 from wok import netinfo
 from wok import network as knetwork
-from wok.config import paths
+from wok.config import PluginPaths
 from wok.exception import InvalidOperation, InvalidParameter
 from wok.exception import MissingParameter, NotFoundError, OperationFailed
 from ..osinfo import defaults as tmpl_defaults
@@ -52,7 +52,7 @@ class NetworksModel(object):
         conn = self.conn.get()
 
         error_msg = ("Please, check the configuration in %s/template.conf to "
-                     "ensure it lists only valid networks." % paths.conf_dir)
+         "ensure it lists only valid networks." % PluginPaths('kimchi').conf_dir)
 
         for net_name in networks:
             try:
diff --git a/plugins/kimchi/model/storagepools.py b/plugins/kimchi/model/storagepools.py
index 681fafc..920d29a 100644
--- a/plugins/kimchi/model/storagepools.py
+++ b/plugins/kimchi/model/storagepools.py
@@ -23,7 +23,7 @@ import sys
 
 from lxml.builder import E
 
-from wok.config import config, paths
+from wok.config import config, PluginPaths
 from ..scan import Scanner
 from wok.exception import InvalidOperation, MissingParameter
 from wok.exception import NotFoundError, OperationFailed
@@ -82,7 +82,8 @@ class StoragePoolsModel(object):
             pools['ISO'] = {'path': '/var/lib/kimchi/isos'}
 
         error_msg = ("Please, check the configuration in %s/template.conf to "
-                     "ensure it has a valid storage pool." % paths.conf_dir)
+                     "ensure it has a valid storage pool." %
+                     PluginPaths('kimchi').conf_dir)
 
         conn = self.conn.get()
         for pool_name in pools:
@@ -245,7 +246,7 @@ class StoragePoolsModel(object):
 
         params['path'] = self.scanner.scan_dir_prepare(params['name'])
         scan_params['pool_path'] = params['path']
-        task_id = add_task('/storagepools/%s' % ISO_POOL_NAME,
+        task_id = add_task('/plugins/kimchi/storagepools/%s' % ISO_POOL_NAME,
                            self.scanner.start_scan, self.objstore, scan_params)
         # Record scanning-task/storagepool mapping for future querying
         try:
diff --git a/plugins/kimchi/model/storagevolumes.py b/plugins/kimchi/model/storagevolumes.py
index 908fbc4..6bc203a 100644
--- a/plugins/kimchi/model/storagevolumes.py
+++ b/plugins/kimchi/model/storagevolumes.py
@@ -114,7 +114,7 @@ class StorageVolumesModel(object):
             raise InvalidParameter('KCHVOL0001E', {'name': name})
 
         params['pool'] = pool_name
-        targeturi = '/storagepools/%s/storagevolumes/%s' % (pool_name, name)
+        targeturi = '/plugins/kimchi/storagepools/%s/storagevolumes/%s' % (pool_name, name)
         taskid = add_task(targeturi, create_func, self.objstore, params)
         return self.task.lookup(taskid)
 
@@ -403,7 +403,7 @@ class StorageVolumeModel(object):
                   'name': name,
                   'new_pool': new_pool,
                   'new_name': new_name}
-        taskid = add_task(u'/storagepools/%s/storagevolumes/%s' %
+        taskid = add_task(u'/plugins/kimchi/storagepools/%s/storagevolumes/%s' %
                           (pool, new_name), self._clone_task, self.objstore,
                           params)
         return self.task.lookup(taskid)
diff --git a/plugins/kimchi/model/vms.py b/plugins/kimchi/model/vms.py
index 2e9721d..96e5084 100644
--- a/plugins/kimchi/model/vms.py
+++ b/plugins/kimchi/model/vms.py
@@ -107,7 +107,7 @@ class VMsModel(object):
         t.validate()
         data = {'name': name, 'template': t,
                 'graphics': params.get('graphics', {})}
-        taskid = add_task(u'/vms/%s' % name, self._create_task,
+        taskid = add_task(u'/plugins/kimchi/vms/%s' % name, self._create_task,
                           self.objstore, data)
 
         return self.task.lookup(taskid)
@@ -245,16 +245,17 @@ class VMModel(object):
             task_names = session.get_list('task')
             for tn in task_names:
                 t = session.get('task', tn)
-                if t['target_uri'].startswith('/vms/'):
-                    uri_name = t['target_uri'][5:]  # 5 = len('/vms/')
+                if t['target_uri'].startswith('/plugins/kimchi/vms/'):
+                    uri_name = t['target_uri'].lstrip('/plugins/kimchi/vms/')
                     vms_being_created.append(uri_name)
 
         current_vm_names = self.vms.get_list() + vms_being_created
         new_name = get_next_clone_name(current_vm_names, name)
 
         # create a task with the actual clone function
-        taskid = add_task(u'/vms/%s/clone' % new_name, self._clone_task,
-                          self.objstore, {'name': name, 'new_name': new_name})
+        taskid = add_task(u'/plugins/kimchi/vms/%s/clone' % new_name,
+                          self._clone_task, self.objstore,
+                          {'name': name, 'new_name': new_name})
 
         return self.task.lookup(taskid)
 
diff --git a/plugins/kimchi/model/vmsnapshots.py b/plugins/kimchi/model/vmsnapshots.py
index 60de253..0724adc 100644
--- a/plugins/kimchi/model/vmsnapshots.py
+++ b/plugins/kimchi/model/vmsnapshots.py
@@ -72,8 +72,8 @@ class VMSnapshotsModel(object):
         name = params.get('name', unicode(int(time.time())))
 
         task_params = {'vm_name': vm_name, 'name': name}
-        taskid = add_task(u'/vms/%s/snapshots/%s' % (vm_name, name),
-                          self._create_task, self.objstore, task_params)
+        taskid = add_task(u'/plugins/kimchi/vms/%s/snapshots/%s' % (vm_name,
+                          name), self._create_task, self.objstore, task_params)
         return self.task.lookup(taskid)
 
     def _create_task(self, cb, params):
diff --git a/plugins/kimchi/osinfo.py b/plugins/kimchi/osinfo.py
index d2aab71..5fe1e07 100644
--- a/plugins/kimchi/osinfo.py
+++ b/plugins/kimchi/osinfo.py
@@ -26,7 +26,7 @@ from collections import defaultdict
 from configobj import ConfigObj
 from distutils.version import LooseVersion
 
-from wok.config import paths
+from wok.config import PluginPaths
 
 
 SUPPORTED_ARCHS = {'x86': ('i386', 'i686', 'x86_64'),
@@ -86,7 +86,7 @@ modern_version_bases = {'x86': {'debian': '6.0', 'ubuntu': '7.10',
 
 
 icon_available_distros = [icon[5:-4] for icon in glob.glob1('%s/images/'
-                          % paths.ui_dir, 'icon-*.png')]
+                          % PluginPaths('kimchi').ui_dir, 'icon-*.png')]
 
 
 def _get_tmpl_defaults():
@@ -116,7 +116,7 @@ def _get_tmpl_defaults():
     default_config = ConfigObj(tmpl_defaults)
 
     # Load template configuration file
-    config_file = os.path.join(paths.conf_dir, 'template.conf')
+    config_file = os.path.join(PluginPaths('kimchi').conf_dir, 'template.conf')
     config = ConfigObj(config_file)
 
     # Merge default configuration with file configuration
@@ -133,7 +133,8 @@ def _get_tmpl_defaults():
 
     # Parse storage section to get storage pool and disks values
     storage_section = default_config.pop('storage')
-    defaults['storagepool'] = '/storagepools/' + storage_section.pop('pool')
+    defaults['storagepool'] = '/plugins/kimchi/storagepools/' + \
+                              storage_section.pop('pool')
     defaults['disks'] = []
     for disk in storage_section.keys():
         data = storage_section[disk]
@@ -206,8 +207,9 @@ def lookup(distro, version):
     params.update(custom_specs.get(distro, {}).get(version, {}))
 
     if distro in icon_available_distros:
-        params['icon'] = 'images/icon-%s.png' % distro
+        params['icon'] = 'plugins/kimchi/images/icon-%s.png' % distro
     else:
-        params['icon'] = 'images/icon-vm.png'
+        params['icon'] = 'plugins/kimchi/images/icon-vm.png'
+
 
     return params
diff --git a/plugins/kimchi/screenshot.py b/plugins/kimchi/screenshot.py
index 05701dd..1cac964 100644
--- a/plugins/kimchi/screenshot.py
+++ b/plugins/kimchi/screenshot.py
@@ -68,7 +68,7 @@ class VMScreenshot(object):
         if now - last_update > self.OUTDATED_SECS:
             self._clean_extra(self.LIVE_WINDOW)
             self._generate_thumbnail()
-        return '/data/screenshots/%s' %\
+        return 'plugins/kimchi/data/screenshots/%s' %\
                os.path.basename(self.info['thumbnail'])
 
     def _clean_extra(self, window=-1):
diff --git a/plugins/kimchi/tests/test_authorization.py b/plugins/kimchi/tests/test_authorization.py
index 6513b67..695b512 100644
--- a/plugins/kimchi/tests/test_authorization.py
+++ b/plugins/kimchi/tests/test_authorization.py
@@ -64,62 +64,62 @@ class AuthorizationTests(unittest.TestCase):
 
     def test_nonroot_access(self):
         # Non-root users can access static host information
-        resp = self.request('/host', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/host', '{}', 'GET')
         self.assertEquals(403, resp.status)
 
         # Non-root users can access host stats
-        resp = self.request('/host/stats', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/host/stats', '{}', 'GET')
         self.assertEquals(403, resp.status)
 
         # Non-root users can not reboot/shutdown host system
-        resp = self.request('/host/reboot', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/host/reboot', '{}', 'POST')
         self.assertEquals(403, resp.status)
-        resp = self.request('/host/shutdown', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/host/shutdown', '{}', 'POST')
         self.assertEquals(403, resp.status)
 
         # Non-root users can not get or debug reports
-        resp = self.request('/debugreports', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/debugreports', '{}', 'GET')
         self.assertEquals(403, resp.status)
-        resp = self.request('/debugreports', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/debugreports', '{}', 'POST')
         self.assertEquals(403, resp.status)
 
         # Non-root users can not create or delete network (only get)
-        resp = self.request('/networks', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/networks', '{}', 'GET')
         self.assertEquals(200, resp.status)
-        resp = self.request('/networks', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/networks', '{}', 'POST')
         self.assertEquals(403, resp.status)
-        resp = self.request('/networks/default/activate', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/networks/default/activate', '{}', 'POST')
         self.assertEquals(403, resp.status)
-        resp = self.request('/networks/default', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/networks/default', '{}', 'DELETE')
         self.assertEquals(403, resp.status)
 
         # Non-root users can not create or delete storage pool (only get)
-        resp = self.request('/storagepools', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/storagepools', '{}', 'GET')
         self.assertEquals(200, resp.status)
-        resp = self.request('/storagepools', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/storagepools', '{}', 'POST')
         self.assertEquals(403, resp.status)
-        resp = self.request('/storagepools/default/activate', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/storagepools/default/activate', '{}', 'POST')
         self.assertEquals(403, resp.status)
-        resp = self.request('/storagepools/default', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/storagepools/default', '{}', 'DELETE')
         self.assertEquals(403, resp.status)
 
         # Non-root users can not update or delete a template
         # but he can get and create a new one
-        resp = self.request('/templates', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/templates', '{}', 'GET')
         self.assertEquals(403, resp.status)
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(403, resp.status)
-        resp = self.request('/templates/test', '{}', 'PUT')
+        resp = self.request('/plugins/kimchi/templates/test', '{}', 'PUT')
         self.assertEquals(403, resp.status)
-        resp = self.request('/templates/test', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/templates/test', '{}', 'DELETE')
         self.assertEquals(403, resp.status)
 
         # Non-root users can only get vms authorized to them
         model.templates_create({'name': u'test', 'cdrom': fake_iso})
 
         task_info = model.vms_create({'name': u'test-me',
-                                      'template': '/templates/test'})
+                                 'template': '/plugins/kimchi/templates/test'})
         wait_task(model.task_lookup, task_info['id'])
 
         model.vm_update(u'test-me',
@@ -127,39 +127,39 @@ class AuthorizationTests(unittest.TestCase):
                          'groups': []})
 
         task_info = model.vms_create({'name': u'test-usera',
-                                      'template': '/templates/test'})
+                                 'template': '/plugins/kimchi/templates/test'})
         wait_task(model.task_lookup, task_info['id'])
 
         non_root = list(set(model.users_get_list()) - set(['root']))[0]
         model.vm_update(u'test-usera', {'users': [non_root], 'groups': []})
 
         task_info = model.vms_create({'name': u'test-groupa',
-                                      'template': '/templates/test'})
+                                 'template': '/plugins/kimchi/templates/test'})
         wait_task(model.task_lookup, task_info['id'])
         a_group = model.groups_get_list()[0]
         model.vm_update(u'test-groupa', {'groups': [a_group]})
 
-        resp = self.request('/vms', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms', '{}', 'GET')
         self.assertEquals(200, resp.status)
         vms_data = json.loads(resp.read())
         self.assertEquals([u'test-groupa', u'test-me'],
                           sorted([v['name'] for v in vms_data]))
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(403, resp.status)
 
         # Create a vm using mockmodel directly to test Resource access
         task_info = model.vms_create({'name': 'kimchi-test',
-                                      'template': '/templates/test'})
+                                 'template': '/plugins/kimchi/templates/test'})
         wait_task(model.task_lookup, task_info['id'])
-        resp = self.request('/vms/kimchi-test', '{}', 'PUT')
+        resp = self.request('/plugins/kimchi/vms/kimchi-test', '{}', 'PUT')
         self.assertEquals(403, resp.status)
-        resp = self.request('/vms/kimchi-test', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/kimchi-test', '{}', 'DELETE')
         self.assertEquals(403, resp.status)
 
         # Non-root users can only update VMs authorized by them
-        resp = self.request('/vms/test-me/start', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-me/start', '{}', 'POST')
         self.assertEquals(200, resp.status)
-        resp = self.request('/vms/test-usera/start', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-usera/start', '{}', 'POST')
         self.assertEquals(403, resp.status)
 
         model.template_delete('test')
diff --git a/plugins/kimchi/tests/test_exception.py b/plugins/kimchi/tests/test_exception.py
index 834a275..32b6baf 100644
--- a/plugins/kimchi/tests/test_exception.py
+++ b/plugins/kimchi/tests/test_exception.py
@@ -57,7 +57,7 @@ class ExceptionTests(unittest.TestCase):
         """
         setup_server('production')
         # test 404
-        resp = json.loads(request(host, ssl_port, '/vms/blah').read())
+        resp = json.loads(request(host, ssl_port, '/plugins/kimchi/vms/blah').read())
         self.assertEquals('404 Not Found', resp.get('code'))
 
         # test 405 wrong method
@@ -67,7 +67,7 @@ class ExceptionTests(unittest.TestCase):
         self.assertEquals(msg, resp.get('reason'))
 
         # test 400 parse error
-        resp = json.loads(request(host, ssl_port, '/vms', '{', 'POST').read())
+        resp = json.loads(request(host, ssl_port, '/plugins/kimchi/vms', '{', 'POST').read())
         msg = u'KCHAPI0006E: Unable to parse JSON request'
         self.assertEquals('400 Bad Request', resp.get('code'))
         self.assertEquals(msg, resp.get('reason'))
@@ -75,7 +75,7 @@ class ExceptionTests(unittest.TestCase):
 
         # test 400 missing required parameter
         req = json.dumps({})
-        resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read())
+        resp = json.loads(request(host, ssl_port, '/plugins/kimchi/vms', req, 'POST').read())
         self.assertEquals('400 Bad Request', resp.get('code'))
         m = u"KCHVM0016E: Specify a template to create a virtual machine from"
         self.assertEquals(m, resp.get('reason'))
@@ -87,7 +87,7 @@ class ExceptionTests(unittest.TestCase):
         """
         setup_server()
         # test 404
-        resp = json.loads(request(host, ssl_port, '/vms/blah').read())
+        resp = json.loads(request(host, ssl_port, '/plugins/kimchi/vms/blah').read())
         self.assertEquals('404 Not Found', resp.get('code'))
 
         # test 405 wrong method
@@ -97,7 +97,7 @@ class ExceptionTests(unittest.TestCase):
         self.assertEquals(msg, resp.get('reason'))
 
         # test 400 parse error
-        resp = json.loads(request(host, ssl_port, '/vms', '{', 'POST').read())
+        resp = json.loads(request(host, ssl_port, '/plugins/kimchi/vms', '{', 'POST').read())
         msg = u'KCHAPI0006E: Unable to parse JSON request'
         self.assertEquals('400 Bad Request', resp.get('code'))
         self.assertEquals(msg, resp.get('reason'))
@@ -105,7 +105,7 @@ class ExceptionTests(unittest.TestCase):
 
         # test 400 missing required parameter
         req = json.dumps({})
-        resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read())
+        resp = json.loads(request(host, ssl_port, '/plugins/kimchi/vms', req, 'POST').read())
         m = u"KCHVM0016E: Specify a template to create a virtual machine from"
         self.assertEquals('400 Bad Request', resp.get('code'))
         self.assertEquals(m, resp.get('reason'))
diff --git a/plugins/kimchi/tests/test_host.py b/plugins/kimchi/tests/test_host.py
index 7770148..5a18490 100644
--- a/plugins/kimchi/tests/test_host.py
+++ b/plugins/kimchi/tests/test_host.py
@@ -62,7 +62,7 @@ class HostTests(unittest.TestCase):
         self.request = partial(request, host, ssl_port)
 
     def test_hostinfo(self):
-        resp = self.request('/host').read()
+        resp = self.request('/plugins/kimchi/host').read()
         info = json.loads(resp)
         keys = ['os_distro', 'os_version', 'os_codename', 'cpu_model',
                 'memory', 'cpus']
@@ -78,7 +78,7 @@ class HostTests(unittest.TestCase):
         time.sleep(1)
         stats_keys = ['cpu_utilization', 'memory', 'disk_read_rate',
                       'disk_write_rate', 'net_recv_rate', 'net_sent_rate']
-        resp = self.request('/host/stats').read()
+        resp = self.request('/plugins/kimchi/host/stats').read()
         stats = json.loads(resp)
         self.assertEquals(sorted(stats_keys), sorted(stats.keys()))
 
@@ -94,41 +94,43 @@ class HostTests(unittest.TestCase):
         self.assertIn('buffers', memory_stats)
         self.assertIn('avail', memory_stats)
 
-        resp = self.request('/host/stats/history').read()
+        resp = self.request('/plugins/kimchi/host/stats/history').read()
         history = json.loads(resp)
         self.assertEquals(sorted(stats_keys), sorted(history.keys()))
 
     def test_host_actions(self):
         def _task_lookup(taskid):
-            return json.loads(self.request('/tasks/%s' % taskid).read())
+            return json.loads(self.request('/plugins/kimchi/tasks/%s' %
+                                           taskid).read())
 
-        resp = self.request('/host/shutdown', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/host/shutdown', '{}', 'POST')
         self.assertEquals(200, resp.status)
-        resp = self.request('/host/reboot', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/host/reboot', '{}', 'POST')
         self.assertEquals(200, resp.status)
 
         # Test system update
-        resp = self.request('/host/packagesupdate', None, 'GET')
+        resp = self.request('/plugins/kimchi/host/packagesupdate', None, 'GET')
         pkgs = json.loads(resp.read())
         self.assertEquals(3, len(pkgs))
 
         pkg_keys = ['package_name', 'repository', 'arch', 'version']
         for p in pkgs:
             name = p['package_name']
-            resp = self.request('/host/packagesupdate/' + name, None, 'GET')
+            resp = self.request('/plugins/kimchi/host/packagesupdate/' + name,
+                                None, 'GET')
             info = json.loads(resp.read())
             self.assertEquals(sorted(pkg_keys), sorted(info.keys()))
 
-        resp = self.request('/host/swupdate', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/host/swupdate', '{}', 'POST')
         task = json.loads(resp.read())
         task_params = [u'id', u'message', u'status', u'target_uri']
         self.assertEquals(sorted(task_params), sorted(task.keys()))
 
-        resp = self.request('/tasks/' + task[u'id'], None, 'GET')
+        resp = self.request('/plugins/kimchi/tasks/' + task[u'id'], None, 'GET')
         task_info = json.loads(resp.read())
         self.assertEquals(task_info['status'], 'running')
         wait_task(_task_lookup, task_info['id'])
-        resp = self.request('/tasks/' + task[u'id'], None, 'GET')
+        resp = self.request('/plugins/kimchi/tasks/' + task[u'id'], None, 'GET')
         task_info = json.loads(resp.read())
         self.assertEquals(task_info['status'], 'finished')
         self.assertIn(u'All packages updated', task_info['message'])
@@ -136,14 +138,15 @@ class HostTests(unittest.TestCase):
         self.assertEquals(0, len(pkgs))
 
     def test_host_partitions(self):
-        resp = self.request('/host/partitions')
+        resp = self.request('/plugins/kimchi/host/partitions')
         self.assertEquals(200, resp.status)
         partitions = json.loads(resp.read())
 
         keys = ['name', 'path', 'type', 'fstype', 'size', 'mountpoint',
                 'available']
         for item in partitions:
-            resp = self.request('/host/partitions/%s' % item['name'])
+            resp = self.request('/plugins/kimchi/host/partitions/%s' % 
+                                item['name'])
             info = json.loads(resp.read())
             self.assertEquals(sorted(info.keys()), sorted(keys))
 
@@ -152,33 +155,36 @@ class HostTests(unittest.TestCase):
             for dev in devices:
                 self.assertEquals(dev['device_type'], dev_type)
 
-        resp = self.request('/host/devices?_cap=scsi_host')
+        resp = self.request('/plugins/kimchi/host/devices?_cap=scsi_host')
         nodedevs = json.loads(resp.read())
         # Mockmodel brings 3 preconfigured scsi fc_host
         self.assertEquals(3, len(nodedevs))
 
-        nodedev = json.loads(self.request('/host/devices/scsi_host2').read())
+        nodedev = json.loads(self.request(
+                             '/plugins/kimchi/host/devices/scsi_host2').read())
         # Mockmodel generates random wwpn and wwnn
         self.assertEquals('scsi_host2', nodedev['name'])
         self.assertEquals('fc_host', nodedev['adapter']['type'])
         self.assertEquals(16, len(nodedev['adapter']['wwpn']))
         self.assertEquals(16, len(nodedev['adapter']['wwnn']))
 
-        devs = json.loads(self.request('/host/devices').read())
+        devs = json.loads(self.request('/plugins/kimchi/host/devices').read())
         dev_names = [dev['name'] for dev in devs]
         for dev_type in ('pci', 'usb_device', 'scsi'):
-            resp = self.request('/host/devices?_cap=%s' % dev_type)
+            resp = self.request('/plugins/kimchi/host/devices?_cap=%s' % 
+                                dev_type)
             devsByType = json.loads(resp.read())
             names = [dev['name'] for dev in devsByType]
             self.assertTrue(set(names) <= set(dev_names))
             asset_devices_type(devsByType, dev_type)
 
-        resp = self.request('/host/devices?_passthrough=true')
+        resp = self.request('/plugins/kimchi/host/devices?_passthrough=true')
         passthru_devs = [dev['name'] for dev in json.loads(resp.read())]
         self.assertTrue(set(passthru_devs) <= set(dev_names))
 
         for dev_type in ('pci', 'usb_device', 'scsi'):
-            resp = self.request('/host/devices?_cap=%s&_passthrough=true' %
+            resp = self.request(
+                   '/plugins/kimchi/host/devices?_cap=%s&_passthrough=true' %
                                 dev_type)
             filteredDevs = json.loads(resp.read())
             filteredNames = [dev['name'] for dev in filteredDevs]
@@ -186,7 +192,8 @@ class HostTests(unittest.TestCase):
             asset_devices_type(filteredDevs, dev_type)
 
         for dev in passthru_devs:
-            resp = self.request('/host/devices?_passthrough_affected_by=%s' %
+            resp = self.request(
+                   '/plugins/kimchi/host/devices?_passthrough_affected_by=%s' %
                                 dev)
             affected_devs = [dev['name'] for dev in json.loads(resp.read())]
             self.assertTrue(set(affected_devs) <= set(dev_names))
diff --git a/plugins/kimchi/tests/test_mock_network.py b/plugins/kimchi/tests/test_mock_network.py
index 4e390b1..749b9c3 100644
--- a/plugins/kimchi/tests/test_mock_network.py
+++ b/plugins/kimchi/tests/test_mock_network.py
@@ -63,7 +63,7 @@ class MockNetworkTests(unittest.TestCase):
     def test_vlan_tag_bridge(self):
         # Verify the current system has at least one interface to create a
         # bridged network
-        interfaces = json.loads(self.request('/interfaces?type=nic').read())
+        interfaces = json.loads(self.request('/plugins/kimchi/interfaces?type=nic').read())
         if len(interfaces) > 0:
             iface = interfaces[0]['name']
             _do_network_test(self, model, {'name': u'bridge-network',
diff --git a/plugins/kimchi/tests/test_mock_storagepool.py b/plugins/kimchi/tests/test_mock_storagepool.py
index c72708b..b96d72d 100644
--- a/plugins/kimchi/tests/test_mock_storagepool.py
+++ b/plugins/kimchi/tests/test_mock_storagepool.py
@@ -60,15 +60,15 @@ class MockStoragepoolTests(unittest.TestCase):
         model.reset()
 
     def _task_lookup(self, taskid):
-        return json.loads(self.request('/tasks/%s' % taskid).read())
+        return json.loads(self.request('/plugins/kimchi/tasks/%s' % taskid).read())
 
     def test_storagepool(self):
         # MockModel always returns 2 partitions (vdx, vdz)
-        partitions = json.loads(self.request('/host/partitions').read())
+        partitions = json.loads(self.request('/plugins/kimchi/host/partitions').read())
         devs = [dev['path'] for dev in partitions]
 
         # MockModel always returns 3 FC devices
-        fc_devs = json.loads(self.request('/host/devices?_cap=fc_host').read())
+        fc_devs = json.loads(self.request('/plugins/kimchi/host/devices?_cap=fc_host').read())
         fc_devs = [dev['name'] for dev in fc_devs]
 
         poolDefs = [
@@ -87,10 +87,10 @@ class MockStoragepoolTests(unittest.TestCase):
 
         def _do_test(params):
             name = params['name']
-            uri = '/storagepools/%s' % name.encode('utf-8')
+            uri = '/plugins/kimchi/storagepools/%s' % name.encode('utf-8')
 
             req = json.dumps(params)
-            resp = self.request('/storagepools', req, 'POST')
+            resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
             self.assertEquals(201, resp.status)
 
             # activate the storage pool
diff --git a/plugins/kimchi/tests/test_mock_storagevolume.py b/plugins/kimchi/tests/test_mock_storagevolume.py
index 3dd16b7..0065305 100644
--- a/plugins/kimchi/tests/test_mock_storagevolume.py
+++ b/plugins/kimchi/tests/test_mock_storagevolume.py
@@ -61,11 +61,11 @@ class MockStorageVolumeTests(unittest.TestCase):
 
     def test_storagevolume(self):
         # MockModel always returns 2 partitions (vdx, vdz)
-        partitions = json.loads(self.request('/host/partitions').read())
+        partitions = json.loads(self.request('/plugins/kimchi/host/partitions').read())
         devs = [dev['path'] for dev in partitions]
 
         # MockModel always returns 3 FC devices
-        fc_devs = json.loads(self.request('/host/devices?_cap=fc_host').read())
+        fc_devs = json.loads(self.request('/plugins/kimchi/host/devices?_cap=fc_host').read())
         fc_devs = [dev['name'] for dev in fc_devs]
 
         poolDefs = [
@@ -84,9 +84,9 @@ class MockStorageVolumeTests(unittest.TestCase):
 
         for pool in poolDefs:
             pool_name = pool['name']
-            uri = '/storagepools/%s' % pool_name.encode('utf-8')
+            uri = '/plugins/kimchi/storagepools/%s' % pool_name.encode('utf-8')
             req = json.dumps(pool)
-            resp = self.request('/storagepools', req, 'POST')
+            resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
             self.assertEquals(201, resp.status)
             # activate the storage pool
             resp = self.request(uri + '/activate', '{}', 'POST')
diff --git a/plugins/kimchi/tests/test_mockmodel.py b/plugins/kimchi/tests/test_mockmodel.py
index 03ad445..133a61e 100644
--- a/plugins/kimchi/tests/test_mockmodel.py
+++ b/plugins/kimchi/tests/test_mockmodel.py
@@ -64,18 +64,18 @@ class MockModelTests(unittest.TestCase):
     def test_screenshot_refresh(self):
         # Create a VM
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        request(host, ssl_port, '/templates', req, 'POST')
+        request(host, ssl_port, '/plugins/kimchi/templates', req, 'POST')
         req = json.dumps({'name': 'test-vm', 'template': '/templates/test'})
-        resp = request(host, ssl_port, '/vms', req, 'POST')
+        resp = request(host, ssl_port, '/plugins/kimchi/vms', req, 'POST')
         task = json.loads(resp.read())
         wait_task(model.task_lookup, task['id'])
 
         # Test screenshot refresh for running vm
-        request(host, ssl_port, '/vms/test-vm/start', '{}', 'POST')
-        resp = request(host, ssl_port, '/vms/test-vm/screenshot')
+        request(host, ssl_port, '/plugins/kimchi/vms/test-vm/start', '{}', 'POST')
+        resp = request(host, ssl_port, '/plugins/kimchi/vms/test-vm/screenshot')
         self.assertEquals(200, resp.status)
         self.assertEquals('image/png', resp.getheader('content-type'))
-        resp1 = request(host, ssl_port, '/vms/test-vm')
+        resp1 = request(host, ssl_port, '/plugins/kimchi/vms/test-vm')
         rspBody = resp1.read()
         testvm_Data = json.loads(rspBody)
         screenshotURL = testvm_Data['screenshot']
@@ -91,13 +91,14 @@ class MockModelTests(unittest.TestCase):
 
     def test_vm_list_sorted(self):
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        request(host, ssl_port, '/templates', req, 'POST')
+        request(host, ssl_port, '/plugins/kimchi/templates', req, 'POST')
 
         def add_vm(name):
             # Create a VM
-            req = json.dumps({'name': name, 'template': '/templates/test'})
-            task = json.loads(request(host, ssl_port, '/vms', req,
-                              'POST').read())
+            req = json.dumps({'name': name,
+                              'template': '/plugins/kimchi/templates/test'})
+            task = json.loads(request(host, ssl_port, '/plugins/kimchi/vms',
+                              req, 'POST').read())
             wait_task(model.task_lookup, task['id'])
 
         vms = [u'abc', u'bca', u'cab', u'xba']
@@ -111,7 +112,7 @@ class MockModelTests(unittest.TestCase):
         model.templates_create({'name': u'test',
                                 'cdrom': fake_iso})
         task = model.vms_create({'name': u'test-vm',
-                                 'template': '/templates/test'})
+                                 'template': '/plugins/kimchi/templates/test'})
         wait_task(model.task_lookup, task['id'])
         vms = model.vms_get_list()
         self.assertEquals(2, len(vms))
diff --git a/plugins/kimchi/tests/test_model.py b/plugins/kimchi/tests/test_model.py
index 7f90274..157ba62 100644
--- a/plugins/kimchi/tests/test_model.py
+++ b/plugins/kimchi/tests/test_model.py
@@ -128,7 +128,7 @@ class ModelTests(unittest.TestCase):
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'test')
 
-            params = {'name': 'kimchi-vm', 'template': '/templates/test'}
+            params = {'name': 'kimchi-vm', 'template': '/plugins/kimchi/templates/test'}
             task = inst.vms_create(params)
             rollback.prependDefer(inst.vm_delete, 'kimchi-vm')
             inst.task_wait(task['id'], 10)
@@ -264,12 +264,13 @@ class ModelTests(unittest.TestCase):
                          "icon": "images/icon-vm.png",
                          "os_distro": "unknown", "os_version": "unknown",
                          "disks": [{"base": vol_path, "size": 10}],
-                         "storagepool": "/storagepools/default"}
+                         "storagepool": "/plugins/kimchi/storagepools/default"}
 
             with inst.objstore as session:
                 session.store('template', tmpl_name, tmpl_info)
 
-            params = {'name': 'kimchi-vm', 'template': '/templates/img-tmpl'}
+            params = {'name': 'kimchi-vm',
+                      'template': '/plugins/kimchi/templates/img-tmpl'}
             task = inst.vms_create(params)
             inst.task_wait(task['id'])
             rollback.prependDefer(inst.vm_delete, 'kimchi-vm')
@@ -289,7 +290,8 @@ class ModelTests(unittest.TestCase):
         params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
         inst.templates_create(params)
         with RollbackContext() as rollback:
-            params = {'name': 'kimchi-vnc', 'template': '/templates/test'}
+            params = {'name': 'kimchi-vnc',
+                      'template': '/plugins/kimchi/templates/test'}
             task1 = inst.vms_create(params)
             inst.task_wait(task1['id'])
             rollback.prependDefer(inst.vm_delete, 'kimchi-vnc')
@@ -299,7 +301,7 @@ class ModelTests(unittest.TestCase):
             self.assertEquals('127.0.0.1', info['graphics']['listen'])
 
             graphics = {'type': 'spice', 'listen': '127.0.0.1'}
-            params = {'name': 'kimchi-spice', 'template': '/templates/test',
+            params = {'name': 'kimchi-spice', 'template': '/plugins/kimchi/templates/test',
                       'graphics': graphics}
             task2 = inst.vms_create(params)
             inst.task_wait(task2['id'])
@@ -330,7 +332,8 @@ class ModelTests(unittest.TestCase):
             rollback.prependDefer(inst.network_deactivate, net_name)
 
             for vm_name in ['kimchi-ifaces', 'kimchi-ifaces-running']:
-                params = {'name': vm_name, 'template': '/templates/test'}
+                params = {'name': vm_name,
+                          'template': '/plugins/kimchi/templates/test'}
                 task = inst.vms_create(params)
                 inst.task_wait(task['id'])
                 rollback.prependDefer(inst.vm_delete, vm_name)
@@ -433,7 +436,8 @@ class ModelTests(unittest.TestCase):
             params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'test')
-            params = {'name': vm_name, 'template': '/templates/test'}
+            params = {'name': vm_name,
+                      'template': '/plugins/kimchi/templates/test'}
             task1 = inst.vms_create(params)
             inst.task_wait(task1['id'])
             rollback.prependDefer(inst.vm_delete, vm_name)
@@ -477,7 +481,7 @@ class ModelTests(unittest.TestCase):
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'old_distro_template')
             params = {'name': vm_name,
-                      'template': '/templates/old_distro_template'}
+                   'template': '/plugins/kimchi/templates/old_distro_template'}
             task2 = inst.vms_create(params)
             inst.task_wait(task2['id'])
             rollback.prependDefer(inst.vm_delete, vm_name)
@@ -499,7 +503,8 @@ class ModelTests(unittest.TestCase):
             params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'test')
-            params = {'name': vm_name, 'template': '/templates/test'}
+            params = {'name': vm_name,
+                      'template': '/plugins/kimchi/templates/test'}
             task = inst.vms_create(params)
             inst.task_wait(task['id'])
             rollback.prependDefer(inst.vm_delete, vm_name)
@@ -589,7 +594,8 @@ class ModelTests(unittest.TestCase):
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'test')
 
-            params = {'name': 'test-vm-1', 'template': '/templates/test'}
+            params = {'name': 'test-vm-1',
+                      'template': '/plugins/kimchi/templates/test'}
             task = inst.vms_create(params)
             inst.task_wait(task['id'])
             rollback.prependDefer(inst.vm_delete, 'test-vm-1')
@@ -607,7 +613,8 @@ class ModelTests(unittest.TestCase):
         inst.templates_create(orig_params)
 
         with RollbackContext() as rollback:
-            params = {'name': 'kimchi-vm1', 'template': '/templates/test'}
+            params = {'name': 'kimchi-vm1',
+                      'template': '/plugins/kimchi/templates/test'}
             task1 = inst.vms_create(params)
             inst.task_wait(task1['id'])
             rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
@@ -639,8 +646,10 @@ class ModelTests(unittest.TestCase):
         inst.templates_create(orig_params)
 
         with RollbackContext() as rollback:
-            params_1 = {'name': 'kimchi-vm1', 'template': '/templates/test'}
-            params_2 = {'name': 'kimchi-vm2', 'template': '/templates/test'}
+            params_1 = {'name': 'kimchi-vm1',
+                        'template': '/plugins/kimchi/templates/test'}
+            params_2 = {'name': 'kimchi-vm2',
+                        'template': '/plugins/kimchi/templates/test'}
             task1 = inst.vms_create(params_1)
             inst.task_wait(task1['id'])
             rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
@@ -824,7 +833,8 @@ class ModelTests(unittest.TestCase):
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'test')
 
-            params = {'name': u'kīмсhī-∨м', 'template': u'/templates/test'}
+            params = {'name': u'kīмсhī-∨м',
+                      'template': u'/plugins/kimchi/templates/test'}
             task = inst.vms_create(params)
             inst.task_wait(task['id'])
             rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
@@ -849,7 +859,8 @@ class ModelTests(unittest.TestCase):
             inst.templates_create(params)
             rollback.prependDefer(inst.template_delete, 'test')
 
-            params = {'name': 'kimchi-vm', 'template': '/templates/test'}
+            params = {'name': 'kimchi-vm',
+                      'template': '/plugins/kimchi/templates/test'}
             task = inst.vms_create(params)
             inst.task_wait(task['id'])
             rollback.prependDefer(inst.vm_delete, 'kimchi-vm')
@@ -914,7 +925,7 @@ class ModelTests(unittest.TestCase):
 
         with RollbackContext() as rollback:
             params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO,
-                      'storagepool': '/storagepools/default-pool',
+                      'storagepool': '/plugins/kimchi/storagepools/default-pool',
                       'domain': 'test',
                       'arch': 'i686'}
 
@@ -922,7 +933,7 @@ class ModelTests(unittest.TestCase):
             rollback.prependDefer(inst.template_delete, 'test')
 
             params = {'name': 'kimchi-vm',
-                      'template': '/templates/test'}
+                      'template': '/plugins/kimchi/templates/test'}
             task = inst.vms_create(params)
             inst.task_wait(task['id'])
             rollback.prependDefer(inst.vm_delete, 'kimchi-vm')
diff --git a/plugins/kimchi/tests/test_model_network.py b/plugins/kimchi/tests/test_model_network.py
index d557b3c..37f5652 100644
--- a/plugins/kimchi/tests/test_model_network.py
+++ b/plugins/kimchi/tests/test_model_network.py
@@ -59,11 +59,11 @@ def tearDownModule():
 def _do_network_test(self, model, params):
     with RollbackContext() as rollback:
         net_name = params['name']
-        uri = '/networks/%s' % net_name.encode('utf-8')
+        uri = '/plugins/kimchi/networks/%s' % net_name.encode('utf-8')
 
         # Create a network
         req = json.dumps(params)
-        resp = self.request('/networks', req, 'POST')
+        resp = self.request('/plugins/kimchi/networks', req, 'POST')
         rollback.prependDefer(rollback_wrapper, model.network_delete,
                               net_name)
         self.assertEquals(201, resp.status)
@@ -100,7 +100,7 @@ class NetworkTests(unittest.TestCase):
         self.request = partial(request, host, ssl_port)
 
     def test_get_networks(self):
-        networks = json.loads(self.request('/networks').read())
+        networks = json.loads(self.request('/plugins/kimchi/networks').read())
         self.assertIn('default', [net['name'] for net in networks])
 
         with RollbackContext() as rollback:
@@ -111,16 +111,16 @@ class NetworkTests(unittest.TestCase):
                                   'connection': 'nat',
                                   'subnet': '127.0.10%i.0/24' % i})
 
-                resp = self.request('/networks', req, 'POST')
+                resp = self.request('/plugins/kimchi/networks', req, 'POST')
                 rollback.prependDefer(model.network_delete, name)
                 self.assertEquals(201, resp.status)
                 network = json.loads(resp.read())
                 self.assertEquals([], network["vms"])
 
-            nets = json.loads(self.request('/networks').read())
+            nets = json.loads(self.request('/plugins/kimchi/networks').read())
             self.assertEquals(len(networks) + 5, len(nets))
 
-            network = json.loads(self.request('/networks/network-1').read())
+            network = json.loads(self.request('/plugins/kimchi/networks/network-1').read())
             keys = [u'name', u'connection', u'interface', u'subnet', u'dhcp',
                     u'vms', u'in_use', u'autostart', u'state', u'persistent']
             self.assertEquals(sorted(keys), sorted(network.keys()))
@@ -134,7 +134,7 @@ class NetworkTests(unittest.TestCase):
 
         # Verify the current system has at least one interface to create a
         # bridged network
-        interfaces = json.loads(self.request('/interfaces?type=nic').read())
+        interfaces = json.loads(self.request('/plugins/kimchi/interfaces?type=nic').read())
         if len(interfaces) > 0:
             iface = interfaces[0]['name']
             networks.append({'name': u'bridge-network', 'connection': 'bridge',
diff --git a/plugins/kimchi/tests/test_model_storagepool.py b/plugins/kimchi/tests/test_model_storagepool.py
index dda0cdc..ec11dc1 100644
--- a/plugins/kimchi/tests/test_model_storagepool.py
+++ b/plugins/kimchi/tests/test_model_storagepool.py
@@ -62,7 +62,7 @@ class StoragepoolTests(unittest.TestCase):
         self.request = partial(request, host, ssl_port)
 
     def test_get_storagepools(self):
-        storagepools = json.loads(self.request('/storagepools').read())
+        storagepools = json.loads(self.request('/plugins/kimchi/storagepools').read())
         self.assertIn('default', [pool['name'] for pool in storagepools])
 
         with RollbackContext() as rollback:
@@ -71,7 +71,7 @@ class StoragepoolTests(unittest.TestCase):
                 name = u'kīмсhī-storagepool-%i' % i
                 req = json.dumps({'name': name, 'type': 'dir',
                                   'path': '/var/lib/libvirt/images/%i' % i})
-                resp = self.request('/storagepools', req, 'POST')
+                resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
                 rollback.prependDefer(model.storagepool_delete, name)
 
                 self.assertEquals(201, resp.status)
@@ -79,11 +79,11 @@ class StoragepoolTests(unittest.TestCase):
                 # Pool name must be unique
                 req = json.dumps({'name': name, 'type': 'dir',
                                   'path': '/var/lib/libvirt/images/%i' % i})
-                resp = self.request('/storagepools', req, 'POST')
+                resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
                 self.assertEquals(400, resp.status)
 
                 # Verify pool information
-                resp = self.request('/storagepools/%s' % name.encode("utf-8"))
+                resp = self.request('/plugins/kimchi/storagepools/%s' % name.encode("utf-8"))
                 p = json.loads(resp.read())
                 keys = [u'name', u'state', u'capacity', u'allocated',
                         u'available', u'path', u'source', u'type',
@@ -95,7 +95,7 @@ class StoragepoolTests(unittest.TestCase):
                 self.assertEquals(True, p['autostart'])
                 self.assertEquals(0, p['nr_volumes'])
 
-            pools = json.loads(self.request('/storagepools').read())
+            pools = json.loads(self.request('/plugins/kimchi/storagepools').read())
             self.assertEquals(len(storagepools) + 3, len(pools))
 
             # Create a pool with an existing path
@@ -103,12 +103,12 @@ class StoragepoolTests(unittest.TestCase):
             rollback.prependDefer(os.rmdir, tmp_path)
             req = json.dumps({'name': 'existing_path', 'type': 'dir',
                               'path': tmp_path})
-            resp = self.request('/storagepools', req, 'POST')
+            resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
             rollback.prependDefer(model.storagepool_delete, 'existing_path')
             self.assertEquals(201, resp.status)
 
             # Reserved pool return 400
             req = json.dumps({'name': 'kimchi_isos', 'type': 'dir',
                               'path': '/var/lib/libvirt/images/%i' % i})
-            resp = request(host, ssl_port, '/storagepools', req, 'POST')
+            resp = request(host, ssl_port, '/plugins/kimchi/storagepools', req, 'POST')
             self.assertEquals(400, resp.status)
diff --git a/plugins/kimchi/tests/test_model_storagevolume.py b/plugins/kimchi/tests/test_model_storagevolume.py
index d47b4e3..103948e 100644
--- a/plugins/kimchi/tests/test_model_storagevolume.py
+++ b/plugins/kimchi/tests/test_model_storagevolume.py
@@ -62,13 +62,13 @@ def tearDownModule():
 
 def _do_volume_test(self, model, host, ssl_port, pool_name):
     def _task_lookup(taskid):
-        return json.loads(self.request('/tasks/%s' % taskid).read())
+        return json.loads(self.request('/plugins/kimchi/tasks/%s' % taskid).read())
 
-    uri = '/storagepools/%s/storagevolumes' % pool_name.encode('utf-8')
+    uri = '/plugins/kimchi/storagepools/%s/storagevolumes' % pool_name.encode('utf-8')
     resp = self.request(uri)
     self.assertEquals(200, resp.status)
 
-    resp = self.request('/storagepools/%s' % pool_name.encode('utf-8'))
+    resp = self.request('/plugins/kimchi/storagepools/%s' % pool_name.encode('utf-8'))
     pool_info = json.loads(resp.read())
     with RollbackContext() as rollback:
         # Create storage volume with 'capacity'
@@ -85,7 +85,7 @@ def _do_volume_test(self, model, host, ssl_port, pool_name):
             self.assertEquals(202, resp.status)
             task_id = json.loads(resp.read())['id']
             wait_task(_task_lookup, task_id)
-            status = json.loads(self.request('/tasks/%s' % task_id).read())
+            status = json.loads(self.request('/plugins/kimchi/tasks/%s' % task_id).read())
             self.assertEquals('finished', status['status'])
             vol_info = json.loads(self.request(vol_uri).read())
             vol_info['name'] = vol
@@ -129,7 +129,7 @@ def _do_volume_test(self, model, host, ssl_port, pool_name):
             rollback.prependDefer(model.storagevolume_delete, pool_name,
                                   cloned_vol_name)
             wait_task(_task_lookup, task['id'])
-            task = json.loads(self.request('/tasks/%s' % task['id']).read())
+            task = json.loads(self.request('/plugins/kimchi/tasks/%s' % task['id']).read())
             self.assertEquals('finished', task['status'])
             resp = self.request(uri + '/' + cloned_vol_name.encode('utf-8'))
 
@@ -168,7 +168,8 @@ def _do_volume_test(self, model, host, ssl_port, pool_name):
             self.assertEquals(202, resp.status)
             task_id = json.loads(resp.read())['id']
             wait_task(_task_lookup, task_id)
-            status = json.loads(self.request('/tasks/%s' % task_id).read())
+            status = json.loads(self.request('/plugins/kimchi/tasks/%s' %
+                                             task_id).read())
             self.assertEquals('ready for upload', status['message'])
 
             # Upload volume content
@@ -249,7 +250,7 @@ class StorageVolumeTests(unittest.TestCase):
         self.request = partial(request, host, ssl_port)
 
     def test_get_storagevolume(self):
-        uri = '/storagepools/default/storagevolumes'
+        uri = '/plugins/kimchi/storagepools/default/storagevolumes'
         resp = self.request(uri)
         self.assertEquals(200, resp.status)
 
diff --git a/plugins/kimchi/tests/test_rest.py b/plugins/kimchi/tests/test_rest.py
index f390abb..69db7a7 100644
--- a/plugins/kimchi/tests/test_rest.py
+++ b/plugins/kimchi/tests/test_rest.py
@@ -96,14 +96,14 @@ class RestTests(unittest.TestCase):
         self.assertEquals(code, resp.status)
 
     def test_get_vms(self):
-        vms = json.loads(self.request('/vms').read())
+        vms = json.loads(self.request('/plugins/kimchi/vms').read())
         # test_rest.py uses MockModel() which connects to libvirt URI
         # test:///default. By default this driver already has one VM created
         self.assertEquals(1, len(vms))
 
         # Create a template as a base for our VMs
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         test_users = ['root']
@@ -111,17 +111,17 @@ class RestTests(unittest.TestCase):
         # Now add a couple of VMs to the mock model
         for i in xrange(10):
             name = 'vm-%i' % i
-            req = json.dumps({'name': name, 'template': '/templates/test',
+            req = json.dumps({'name': name, 'template': '/plugins/kimchi/templates/test',
                              'users': test_users, 'groups': test_groups})
-            resp = self.request('/vms', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms', req, 'POST')
             self.assertEquals(202, resp.status)
             task = json.loads(resp.read())
             wait_task(self._task_lookup, task['id'])
 
-        vms = json.loads(self.request('/vms').read())
+        vms = json.loads(self.request('/plugins/kimchi/vms').read())
         self.assertEquals(11, len(vms))
 
-        vm = json.loads(self.request('/vms/vm-1').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/vm-1').read())
         self.assertEquals('vm-1', vm['name'])
         self.assertEquals('shutoff', vm['state'])
         self.assertEquals([], vm['users'])
@@ -129,123 +129,124 @@ class RestTests(unittest.TestCase):
 
     def test_edit_vm(self):
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
-        req = json.dumps({'name': 'vm-1', 'template': '/templates/test'})
-        resp = self.request('/vms', req, 'POST')
+        req = json.dumps({'name': 'vm-1',
+                          'template': '/plugins/kimchi/templates/test'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
 
-        vm = json.loads(self.request('/vms/vm-1').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/vm-1').read())
         self.assertEquals('vm-1', vm['name'])
 
-        resp = self.request('/vms/vm-1/start', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/vm-1/start', '{}', 'POST')
         self.assertEquals(200, resp.status)
 
         req = json.dumps({'unsupported-attr': 'attr'})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'name': 'new-vm'})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'cpus': 3})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(200, resp.status)
 
         # Check if there is support to memory hotplug, once vm is running
-        resp = self.request('/config/capabilities').read()
+        resp = self.request('/plugins/kimchi/config/capabilities').read()
         conf = json.loads(resp)
         req = json.dumps({'memory': 2048})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         if conf['mem_hotplug_support']:
             self.assertEquals(200, resp.status)
         else:
             self.assertEquals(400, resp.status)
 
         req = json.dumps({"graphics": {'passwd': "abcdef"}})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         info = json.loads(resp.read())
         self.assertEquals('abcdef', info["graphics"]["passwd"])
         self.assertEquals(None, info["graphics"]["passwdValidTo"])
 
-        resp = self.request('/vms/vm-1/poweroff', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/vm-1/poweroff', '{}', 'POST')
         self.assertEquals(200, resp.status)
 
         req = json.dumps({"graphics": {'passwd': "123456",
                                        'passwdValidTo': 20}})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         info = json.loads(resp.read())
         self.assertEquals('123456', info["graphics"]["passwd"])
         self.assertGreaterEqual(20, info["graphics"]["passwdValidTo"])
 
         req = json.dumps({'name': 12})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'name': ''})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'cpus': -2})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'cpus': 'four'})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'memory': 100})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'memory': 'ten gigas'})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         req = json.dumps({'name': 'new-name', 'cpus': 5, 'UUID': 'notallowed'})
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         params = {'name': u'∨м-црdαtеd', 'cpus': 5, 'memory': 3072}
         req = json.dumps(params)
-        resp = self.request('/vms/vm-1', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
         self.assertEquals(303, resp.status)
-        vm = json.loads(self.request('/vms/∨м-црdαtеd', req).read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/∨м-црdαtеd', req).read())
         for key in params.keys():
             self.assertEquals(params[key], vm[key])
 
         # change only VM users - groups are not changed (default is empty)
-        resp = self.request('/users', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/users', '{}', 'GET')
         users = json.loads(resp.read())
         req = json.dumps({'users': users})
-        resp = self.request('/vms/∨м-црdαtеd', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/∨м-црdαtеd', req, 'PUT')
         self.assertEquals(200, resp.status)
-        info = json.loads(self.request('/vms/∨м-црdαtеd', '{}').read())
+        info = json.loads(self.request('/plugins/kimchi/vms/∨м-црdαtеd', '{}').read())
         self.assertEquals(users, info['users'])
 
         # change only VM groups - users are not changed (default is empty)
-        resp = self.request('/groups', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/groups', '{}', 'GET')
         groups = json.loads(resp.read())
         req = json.dumps({'groups': groups})
-        resp = self.request('/vms/∨м-црdαtеd', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/∨м-црdαtеd', req, 'PUT')
         self.assertEquals(200, resp.status)
-        info = json.loads(self.request('/vms/∨м-црdαtеd', '{}').read())
+        info = json.loads(self.request('/plugins/kimchi/vms/∨м-црdαtеd', '{}').read())
         self.assertEquals(groups, info['groups'])
 
         # change VM users (wrong value) and groups
         # when an error occurs, everything fails and nothing is changed
         req = json.dumps({'users': ['userdoesnotexist'], 'groups': []})
-        resp = self.request('/vms/∨м-црdαtеd', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/∨м-црdαtеd', req, 'PUT')
         self.assertEquals(400, resp.status)
 
         # change VM users and groups (wrong value)
         # when an error occurs, everything fails and nothing is changed
         req = json.dumps({'users': [], 'groups': ['groupdoesnotexist']})
-        resp = self.request('/vms/∨м-црdαtеd', req, 'PUT')
+        resp = self.request('/plugins/kimchi/vms/∨м-црdαtеd', req, 'PUT')
         self.assertEquals(400, resp.status)
 
     def test_vm_lifecycle(self):
@@ -253,31 +254,32 @@ class RestTests(unittest.TestCase):
         req = json.dumps({'name': 'test', 'disks': [{'size': 1}],
                           'icon': 'images/icon-debian.png',
                           'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Create a VM
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test'})
-        resp = self.request('/vms', req, 'POST')
+        req = json.dumps({'name': 'test-vm',
+                          'template': '/plugins/kimchi/templates/test'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
         self.assertEquals(202, resp.status)
 
         # Verify the VM
-        vm = json.loads(self.request('/vms/test-vm').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('shutoff', vm['state'])
         self.assertEquals('images/icon-debian.png', vm['icon'])
 
         # Verify the volume was created
-        vol_uri = '/storagepools/default-pool/storagevolumes/%s-0.img'
+        vol_uri = '/plugins/kimchi/storagepools/default-pool/storagevolumes/%s-0.img'
         resp = self.request(vol_uri % vm['uuid'])
         vol = json.loads(resp.read())
         self.assertEquals(1 << 30, vol['capacity'])
         self.assertEquals(['test-vm'], vol['used_by'])
 
         # Start the VM
-        resp = self.request('/vms/test-vm/start', '{}', 'POST')
-        vm = json.loads(self.request('/vms/test-vm').read())
+        resp = self.request('/plugins/kimchi/vms/test-vm/start', '{}', 'POST')
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('running', vm['state'])
 
         # Test screenshot
@@ -286,32 +288,32 @@ class RestTests(unittest.TestCase):
         self.assertTrue(resp.getheader('Content-type').startswith('image'))
 
         # Clone a running VM
-        resp = self.request('/vms/test-vm/clone', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/clone', '{}', 'POST')
         self.assertEquals(400, resp.status)
 
         # Force poweroff the VM
-        resp = self.request('/vms/test-vm/poweroff', '{}', 'POST')
-        vm = json.loads(self.request('/vms/test-vm').read())
+        resp = self.request('/plugins/kimchi/vms/test-vm/poweroff', '{}', 'POST')
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('shutoff', vm['state'])
 
         # Test create VM with same name fails with 400
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test'})
-        resp = self.request('/vms', req, 'POST')
+        req = json.dumps({'name': 'test-vm', 'template': '/plugins/kimchi/templates/test'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(400, resp.status)
 
         # Clone a VM
-        resp = self.request('/vms/test-vm/clone', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/clone', '{}', 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
-        task = json.loads(self.request('/tasks/%s' % task['id'], '{}').read())
+        task = json.loads(self.request('/plugins/kimchi/tasks/%s' % task['id'], '{}').read())
         self.assertEquals('finished', task['status'])
         clone_vm_name = task['target_uri'].split('/')[-2]
         self.assertTrue(re.match(u'test-vm-clone-\d+', clone_vm_name))
 
-        resp = self.request('/vms/test-vm', '{}')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}')
         original_vm_info = json.loads(resp.read())
-        resp = self.request('/vms/%s' % clone_vm_name, '{}')
+        resp = self.request('/plugins/kimchi/vms/%s' % clone_vm_name, '{}')
         self.assertEquals(200, resp.status)
         clone_vm_info = json.loads(resp.read())
 
@@ -327,20 +329,21 @@ class RestTests(unittest.TestCase):
 
         # Create a snapshot on a stopped VM
         params = {'name': 'test-snap'}
-        resp = self.request('/vms/test-vm/snapshots', json.dumps(params),
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots', json.dumps(params),
                             'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
-        task = json.loads(self.request('/tasks/%s' % task['id']).read())
+        task = json.loads(self.request('/plugins/kimchi/tasks/%s' % task['id']).read())
         self.assertEquals('finished', task['status'])
 
         # Look up a non-existing snapshot
-        resp = self.request('/vms/test-vm/snapshots/snap404', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/snap404',
+                            '{}', 'GET')
         self.assertEquals(404, resp.status)
 
         # Look up a snapshot
-        resp = self.request('/vms/test-vm/snapshots/%s' % params['name'], '{}',
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/%s' % params['name'], '{}',
                             'GET')
         self.assertEquals(200, resp.status)
         snap = json.loads(resp.read())
@@ -349,90 +352,90 @@ class RestTests(unittest.TestCase):
         self.assertEquals(u'', snap['parent'])
         self.assertEquals(u'shutoff', snap['state'])
 
-        resp = self.request('/vms/test-vm/snapshots', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots', '{}', 'GET')
         self.assertEquals(200, resp.status)
         snaps = json.loads(resp.read())
         self.assertEquals(1, len(snaps))
 
         # Look up current snapshot (the one created above)
-        resp = self.request('/vms/test-vm/snapshots/current', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/current', '{}', 'GET')
         self.assertEquals(200, resp.status)
         snap = json.loads(resp.read())
         self.assertEquals(params['name'], snap['name'])
 
-        resp = self.request('/vms/test-vm/snapshots', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots', '{}', 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         snap_name = task['target_uri'].split('/')[-1]
         wait_task(self._task_lookup, task['id'])
-        resp = self.request('/tasks/%s' % task['id'], '{}', 'GET')
+        resp = self.request('/plugins/kimchi/tasks/%s' % task['id'], '{}', 'GET')
         task = json.loads(resp.read())
         self.assertEquals('finished', task['status'])
 
-        resp = self.request('/vms/test-vm/snapshots', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots', '{}', 'GET')
         self.assertEquals(200, resp.status)
         snaps = json.loads(resp.read())
         self.assertEquals(2, len(snaps))
 
         # Look up current snapshot (the one created above)
-        resp = self.request('/vms/test-vm/snapshots/current', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/current', '{}', 'GET')
         self.assertEquals(200, resp.status)
         snap = json.loads(resp.read())
         self.assertEquals(snap_name, snap['name'])
 
         # Revert to snapshot
-        resp = self.request('/vms/test-vm/snapshots/%s/revert' %
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/%s/revert' %
                             params['name'], '{}', 'POST')
         self.assertEquals(200, resp.status)
         snap = json.loads(resp.read())
-        resp = self.request('/vms/test-vm', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'GET')
         self.assertEquals(200, resp.status)
         vm = json.loads(resp.read())
         self.assertEquals(vm['state'], snap['state'])
-        resp = self.request('/vms/test-vm/snapshots/current', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/current', '{}', 'GET')
         self.assertEquals(200, resp.status)
         current_snap = json.loads(resp.read())
         self.assertEquals(snap, current_snap)
 
         # Delete a snapshot
-        resp = self.request('/vms/test-vm/snapshots/%s' % params['name'],
+        resp = self.request('/plugins/kimchi/vms/test-vm/snapshots/%s' % params['name'],
                             '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Suspend the VM
-        resp = self.request('/vms/test-vm', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'GET')
         self.assertEquals(200, resp.status)
         vm = json.loads(resp.read())
         self.assertEquals(vm['state'], 'shutoff')
-        resp = self.request('/vms/test-vm/suspend', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/suspend', '{}', 'POST')
         self.assertEquals(400, resp.status)
-        resp = self.request('/vms/test-vm/start', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/start', '{}', 'POST')
         self.assertEquals(200, resp.status)
-        resp = self.request('/vms/test-vm', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'GET')
         self.assertEquals(200, resp.status)
         vm = json.loads(resp.read())
         self.assertEquals(vm['state'], 'running')
-        resp = self.request('/vms/test-vm/suspend', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/suspend', '{}', 'POST')
         self.assertEquals(200, resp.status)
-        resp = self.request('/vms/test-vm', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'GET')
         self.assertEquals(200, resp.status)
         vm = json.loads(resp.read())
         self.assertEquals(vm['state'], 'paused')
 
         # Resume the VM
-        resp = self.request('/vms/test-vm/resume', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/resume', '{}', 'POST')
         self.assertEquals(200, resp.status)
-        resp = self.request('/vms/test-vm', '{}', 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'GET')
         self.assertEquals(200, resp.status)
         vm = json.loads(resp.read())
         self.assertEquals(vm['state'], 'running')
 
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Delete the Template
-        resp = self.request('/templates/test', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/templates/test', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Verify the volume was deleted
@@ -441,87 +444,88 @@ class RestTests(unittest.TestCase):
     def test_vm_graphics(self):
         # Create a Template
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Create a VM with default args
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test'})
-        resp = self.request('/vms', req, 'POST')
+        req = json.dumps({'name': 'test-vm',
+                          'template': '/plugins/kimchi/templates/test'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
         # Verify the VM
-        vm = json.loads(self.request('/vms/test-vm').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('127.0.0.1', vm['graphics']['listen'])
         self.assertEquals('vnc', vm['graphics']['type'])
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Create a VM with specified graphics type and listen
         graphics = {'type': 'vnc', 'listen': '127.0.0.1'}
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test',
+        req = json.dumps({'name': 'test-vm', 'template': '/plugins/kimchi/templates/test',
                           'graphics': graphics})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
         # Verify the VM
-        vm = json.loads(self.request('/vms/test-vm').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('127.0.0.1', vm['graphics']['listen'])
         self.assertEquals('vnc', vm['graphics']['type'])
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Create a VM with listen as ipv6 address
         graphics = {'type': 'spice', 'listen': 'fe00::0'}
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test',
+        req = json.dumps({'name': 'test-vm', 'template': '/plugins/kimchi/templates/test',
                           'graphics': graphics})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
         # Verify the VM
-        vm = json.loads(self.request('/vms/test-vm').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('fe00::0', vm['graphics']['listen'])
         self.assertEquals('spice', vm['graphics']['type'])
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Create a VM with specified graphics type and default listen
         graphics = {'type': 'spice'}
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test',
+        req = json.dumps({'name': 'test-vm', 'template': '/plugins/kimchi/templates/test',
                           'graphics': graphics})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
         # Verify the VM
-        vm = json.loads(self.request('/vms/test-vm').read())
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('127.0.0.1', vm['graphics']['listen'])
         self.assertEquals('spice', vm['graphics']['type'])
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Try to create a VM with invalid graphics type
         graphics = {'type': 'invalid'}
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test',
+        req = json.dumps({'name': 'test-vm', 'template': '/plugins/kimchi/templates/test',
                           'graphics': graphics})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(400, resp.status)
 
         # Try to create a VM with invalid graphics listen
         graphics = {'type': 'spice', 'listen': 'invalid'}
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test',
+        req = json.dumps({'name': 'test-vm', 'template': '/plugins/kimchi/templates/test',
                           'graphics': graphics})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(400, resp.status)
 
         # Delete the Template
-        resp = self.request('/templates/test', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/templates/test', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
     def test_vm_storage_devices(self):
@@ -529,25 +533,25 @@ class RestTests(unittest.TestCase):
         with RollbackContext() as rollback:
             # Create a template as a base for our VMs
             req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-            resp = self.request('/templates', req, 'POST')
+            resp = self.request('/plugins/kimchi/templates', req, 'POST')
             self.assertEquals(201, resp.status)
             # Delete the template
             rollback.prependDefer(self.request,
-                                  '/templates/test', '{}', 'DELETE')
+                                  '/plugins/kimchi/templates/test', '{}', 'DELETE')
 
             # Create a VM with default args
             req = json.dumps({'name': 'test-vm',
-                              'template': '/templates/test'})
-            resp = self.request('/vms', req, 'POST')
+                              'template': '/plugins/kimchi/templates/test'})
+            resp = self.request('/plugins/kimchi/vms', req, 'POST')
             self.assertEquals(202, resp.status)
             task = json.loads(resp.read())
             wait_task(self._task_lookup, task['id'])
             # Delete the VM
             rollback.prependDefer(self.request,
-                                  '/vms/test-vm', '{}', 'DELETE')
+                                  '/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
 
             # Check storage devices
-            resp = self.request('/vms/test-vm/storages', '{}', 'GET')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', '{}', 'GET')
             devices = json.loads(resp.read())
             self.assertEquals(2, len(devices))
             dev_types = []
@@ -563,7 +567,7 @@ class RestTests(unittest.TestCase):
             req = json.dumps({'dev': 'hdx',
                               'type': 'cdrom',
                               'path': '/tmp/nonexistent.iso'})
-            resp = self.request('/vms/test-vm/storages', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', req, 'POST')
             self.assertEquals(400, resp.status)
 
             # Create temp storage pool
@@ -572,9 +576,9 @@ class RestTests(unittest.TestCase):
                               'allocated': 512,
                               'path': '/tmp',
                               'type': 'dir'})
-            resp = self.request('/storagepools', req, 'POST')
+            resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
             self.assertEquals(201, resp.status)
-            resp = self.request('/storagepools/tmp/activate', req, 'POST')
+            resp = self.request('/plugins/kimchi/storagepools/tmp/activate', req, 'POST')
             self.assertEquals(200, resp.status)
 
             # 'name' is required for this type of volume
@@ -582,7 +586,7 @@ class RestTests(unittest.TestCase):
                               'allocation': 512,
                               'type': 'disk',
                               'format': 'raw'})
-            resp = self.request('/storagepools/tmp/storagevolumes',
+            resp = self.request('/plugins/kimchi/storagepools/tmp/storagevolumes',
                                 req, 'POST')
             self.assertEquals(400, resp.status)
             req = json.dumps({'name': "attach-volume",
@@ -590,7 +594,7 @@ class RestTests(unittest.TestCase):
                               'allocation': 512,
                               'type': 'disk',
                               'format': 'raw'})
-            resp = self.request('/storagepools/tmp/storagevolumes',
+            resp = self.request('/plugins/kimchi/storagepools/tmp/storagevolumes',
                                 req, 'POST')
             self.assertEquals(202, resp.status)
             time.sleep(1)
@@ -602,7 +606,7 @@ class RestTests(unittest.TestCase):
                               'pool': 'tmp',
                               'vol': 'attach-volume',
                               'path': '/tmp/existent.iso'})
-            resp = self.request('/vms/test-vm/storages', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', req, 'POST')
             self.assertEquals(400, resp.status)
 
             # Attach disk with both path and volume specified
@@ -611,21 +615,21 @@ class RestTests(unittest.TestCase):
                               'pool': 'tmp',
                               'vol': 'attach-volume',
                               'path': '/tmp/existent.iso'})
-            resp = self.request('/vms/test-vm/storages', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', req, 'POST')
             self.assertEquals(400, resp.status)
 
             # Attach disk with only pool specified
             req = json.dumps({'dev': 'hdx',
                               'type': 'cdrom',
                               'pool': 'tmp'})
-            resp = self.request('/vms/test-vm/storages', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', req, 'POST')
             self.assertEquals(400, resp.status)
 
             # Attach disk with pool and vol specified
             req = json.dumps({'type': 'disk',
                               'pool': 'tmp',
                               'vol': 'attach-volume'})
-            resp = self.request('/vms/test-vm/storages', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', req, 'POST')
             self.assertEquals(201, resp.status)
             cd_info = json.loads(resp.read())
             self.assertEquals('disk', cd_info['type'])
@@ -633,7 +637,7 @@ class RestTests(unittest.TestCase):
             # Attach a cdrom with existent dev name
             req = json.dumps({'type': 'cdrom',
                               'path': '/tmp/existent.iso'})
-            resp = self.request('/vms/test-vm/storages', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages', req, 'POST')
             self.assertEquals(201, resp.status)
             cd_info = json.loads(resp.read())
             cd_dev = cd_info['dev']
@@ -641,34 +645,34 @@ class RestTests(unittest.TestCase):
             self.assertEquals('/tmp/existent.iso', cd_info['path'])
             # Delete the file and cdrom
             rollback.prependDefer(self.request,
-                                  '/vms/test-vm/storages/hdx', '{}', 'DELETE')
+                                  '/plugins/kimchi/vms/test-vm/storages/hdx', '{}', 'DELETE')
             os.remove('/tmp/existent.iso')
 
             # Change path of storage cdrom
             cdrom = u'http://fedora.mirrors.tds.net/pub/fedora/releases/20/'\
                     'Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso'
             req = json.dumps({'path': cdrom})
-            resp = self.request('/vms/test-vm/storages/' + cd_dev, req, 'PUT')
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages/' + cd_dev, req, 'PUT')
             self.assertEquals(200, resp.status)
             cd_info = json.loads(resp.read())
             self.assertEquals(urlparse.urlparse(cdrom).path,
                               urlparse.urlparse(cd_info['path']).path)
 
             # Test GET
-            devs = json.loads(self.request('/vms/test-vm/storages').read())
+            devs = json.loads(self.request('/plugins/kimchi/vms/test-vm/storages').read())
             self.assertEquals(4, len(devs))
 
             # Detach storage cdrom
-            resp = self.request('/vms/test-vm/storages/' + cd_dev,
+            resp = self.request('/plugins/kimchi/vms/test-vm/storages/' + cd_dev,
                                 '{}', 'DELETE')
             self.assertEquals(204, resp.status)
 
             # Test GET
-            devs = json.loads(self.request('/vms/test-vm/storages').read())
+            devs = json.loads(self.request('/plugins/kimchi/vms/test-vm/storages').read())
             self.assertEquals(3, len(devs))
-            resp = self.request('/storagepools/tmp/deactivate', {}, 'POST')
+            resp = self.request('/plugins/kimchi/storagepools/tmp/deactivate', {}, 'POST')
             self.assertEquals(200, resp.status)
-            resp = self.request('/storagepools/tmp', {}, 'DELETE')
+            resp = self.request('/plugins/kimchi/storagepools/tmp', {}, 'DELETE')
             self.assertEquals(204, resp.status)
 
     def test_vm_iface(self):
@@ -676,38 +680,38 @@ class RestTests(unittest.TestCase):
         with RollbackContext() as rollback:
             # Create a template as a base for our VMs
             req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-            resp = self.request('/templates', req, 'POST')
+            resp = self.request('/plugins/kimchi/templates', req, 'POST')
             self.assertEquals(201, resp.status)
             # Delete the template
             rollback.prependDefer(self.request,
-                                  '/templates/test', '{}', 'DELETE')
+                                  '/plugins/kimchi/templates/test', '{}', 'DELETE')
 
             # Create a VM with default args
             req = json.dumps({'name': 'test-vm',
-                              'template': '/templates/test'})
-            resp = self.request('/vms', req, 'POST')
+                              'template': '/plugins/kimchi/templates/test'})
+            resp = self.request('/plugins/kimchi/vms', req, 'POST')
             self.assertEquals(202, resp.status)
             task = json.loads(resp.read())
             wait_task(self._task_lookup, task['id'])
             # Delete the VM
             rollback.prependDefer(self.request,
-                                  '/vms/test-vm', '{}', 'DELETE')
+                                  '/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
 
             # Create a network
             req = json.dumps({'name': 'test-network',
                               'connection': 'nat',
                               'net': '127.0.1.0/24'})
-            resp = self.request('/networks', req, 'POST')
+            resp = self.request('/plugins/kimchi/networks', req, 'POST')
             self.assertEquals(201, resp.status)
             # Delete the network
             rollback.prependDefer(self.request,
-                                  '/networks/test-network', '{}', 'DELETE')
+                                  '/plugins/kimchi/networks/test-network', '{}', 'DELETE')
 
-            ifaces = json.loads(self.request('/vms/test-vm/ifaces').read())
+            ifaces = json.loads(self.request('/plugins/kimchi/vms/test-vm/ifaces').read())
             self.assertEquals(1, len(ifaces))
 
             for iface in ifaces:
-                res = json.loads(self.request('/vms/test-vm/ifaces/%s' %
+                res = json.loads(self.request('/plugins/kimchi/vms/test-vm/ifaces/%s' %
                                               iface['mac']).read())
                 self.assertEquals('default', res['network'])
                 self.assertEquals(17, len(res['mac']))
@@ -716,14 +720,15 @@ class RestTests(unittest.TestCase):
 
             # try to attach an interface without specifying 'model'
             req = json.dumps({'type': 'network'})
-            resp = self.request('/vms/test-vm/ifaces', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/ifaces', req,
+                                'POST')
             self.assertEquals(400, resp.status)
 
             # attach network interface to vm
             req = json.dumps({"type": "network",
                               "network": "test-network",
                               "model": "virtio"})
-            resp = self.request('/vms/test-vm/ifaces', req, 'POST')
+            resp = self.request('/plugins/kimchi/vms/test-vm/ifaces', req, 'POST')
             self.assertEquals(201, resp.status)
             iface = json.loads(resp.read())
 
@@ -736,15 +741,15 @@ class RestTests(unittest.TestCase):
             newMacAddr = '54:50:e3:44:8a:af'
             req = json.dumps({"network": "default", "model": "virtio",
                              "type": "network", "mac": newMacAddr})
-            resp = self.request('/vms/test-vm/ifaces/%s' % iface['mac'],
-                                req, 'PUT')
+            resp = self.request('/plugins/kimchi/vms/test-vm/ifaces/%s' %
+                                iface['mac'], req, 'PUT')
             self.assertEquals(303, resp.status)
-            iface = json.loads(self.request('/vms/test-vm/ifaces/%s' %
+            iface = json.loads(self.request('/plugins/kimchi/vms/test-vm/ifaces/%s' %
                                             newMacAddr).read())
             self.assertEquals(newMacAddr, iface['mac'])
 
             # detach network interface from vm
-            resp = self.request('/vms/test-vm/ifaces/%s' % iface['mac'],
+            resp = self.request('/plugins/kimchi/vms/test-vm/ifaces/%s' % iface['mac'],
                                 '{}', 'DELETE')
             self.assertEquals(204, resp.status)
 
@@ -752,7 +757,7 @@ class RestTests(unittest.TestCase):
         # Create a Template
         req = json.dumps({'name': 'test', 'cdrom': fake_iso,
                                           'disks': [{'size': 1}]})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Create alternate storage
@@ -761,33 +766,34 @@ class RestTests(unittest.TestCase):
                           'allocated': 512,
                           'path': '/tmp',
                           'type': 'dir'})
-        resp = self.request('/storagepools', req, 'POST')
+        resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
         self.assertEquals(201, resp.status)
-        resp = self.request('/storagepools/alt/activate', req, 'POST')
+        resp = self.request('/plugins/kimchi/storagepools/alt/activate', req, 'POST')
         self.assertEquals(200, resp.status)
 
         # Create a VM
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test',
-                          'storagepool': '/storagepools/alt'})
-        resp = self.request('/vms', req, 'POST')
+        req = json.dumps({'name': 'test-vm',
+                          'template': '/plugins/kimchi/templates/test',
+                          'storagepool': '/plugins/kimchi/storagepools/alt'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
-        resp = self.request('/vms/test-vm', {}, 'GET')
+        resp = self.request('/plugins/kimchi/vms/test-vm', {}, 'GET')
         vm_info = json.loads(resp.read())
 
         # Test template not changed after vm customise its pool
-        t = json.loads(self.request('/templates/test').read())
-        self.assertEquals(t['storagepool'], '/storagepools/default-pool')
+        t = json.loads(self.request('/plugins/kimchi/templates/test').read())
+        self.assertEquals(t['storagepool'], '/plugins/kimchi/storagepools/default-pool')
 
         # Verify the volume was created
-        vol_uri = '/storagepools/alt/storagevolumes/%s-0.img' % vm_info['uuid']
+        vol_uri = '/plugins/kimchi/storagepools/alt/storagevolumes/%s-0.img' % vm_info['uuid']
         resp = self.request(vol_uri)
         vol = json.loads(resp.read())
         self.assertEquals(1 << 30, vol['capacity'])
 
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Verify the volume was deleted
@@ -798,71 +804,72 @@ class RestTests(unittest.TestCase):
         req = json.dumps({'name': 'scsi_fc_pool',
                           'type': 'scsi',
                           'source': {'adapter_name': 'scsi_host2'}})
-        resp = self.request('/storagepools', req, 'POST')
+        resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Test create vms using lun of this pool
         # activate the storage pool
-        resp = self.request('/storagepools/scsi_fc_pool/activate', '{}',
+        resp = self.request('/plugins/kimchi/storagepools/scsi_fc_pool/activate', '{}',
                             'POST')
 
         # Create template fails because SCSI volume is missing
         tmpl_params = {'name': 'test_fc_pool', 'cdrom': fake_iso,
-                       'storagepool': '/storagepools/scsi_fc_pool'}
+                       'storagepool': '/plugins/kimchi/storagepools/scsi_fc_pool'}
         req = json.dumps(tmpl_params)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(400, resp.status)
 
         # Choose SCSI volume to create template
-        resp = self.request('/storagepools/scsi_fc_pool/storagevolumes')
+        resp = self.request('/plugins/kimchi/storagepools/scsi_fc_pool/storagevolumes')
         lun_name = json.loads(resp.read())[0]['name']
 
         tmpl_params['disks'] = [{'index': 0, 'volume': lun_name}]
         req = json.dumps(tmpl_params)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Create vm in scsi pool
         req = json.dumps({'name': 'test-vm',
-                          'template': '/templates/test_fc_pool'})
-        resp = self.request('/vms', req, 'POST')
+                         'template': '/plugins/kimchi/templates/test_fc_pool'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
 
         # Start the VM
-        resp = self.request('/vms/test-vm/start', '{}', 'POST')
-        vm = json.loads(self.request('/vms/test-vm').read())
+        resp = self.request('/plugins/kimchi/vms/test-vm/start', '{}', 'POST')
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('running', vm['state'])
 
         # Force poweroff the VM
-        resp = self.request('/vms/test-vm/poweroff', '{}', 'POST')
-        vm = json.loads(self.request('/vms/test-vm').read())
+        resp = self.request('/plugins/kimchi/vms/test-vm/poweroff', '{}', 'POST')
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         self.assertEquals('shutoff', vm['state'])
 
         # Delete the VM
-        resp = self.request('/vms/test-vm', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
     def test_unnamed_vms(self):
         # Create a Template
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Create 5 unnamed vms from this template
         for i in xrange(1, 6):
-            req = json.dumps({'template': '/templates/test'})
-            task = json.loads(self.request('/vms', req, 'POST').read())
+            req = json.dumps({'template': '/plugins/kimchi/templates/test'})
+            task = json.loads(self.request('/plugins/kimchi/vms', 
+                              req, 'POST').read())
             wait_task(self._task_lookup, task['id'])
-            resp = self.request('/vms/test-vm-%i' % i, {}, 'GET')
+            resp = self.request('/plugins/kimchi/vms/test-vm-%i' % i, {}, 'GET')
             self.assertEquals(resp.status, 200)
-        count = len(json.loads(self.request('/vms').read()))
+        count = len(json.loads(self.request('/plugins/kimchi/vms').read()))
         self.assertEquals(6, count)
 
     def test_create_vm_without_template(self):
         req = json.dumps({'name': 'vm-without-template'})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(400, resp.status)
         resp = json.loads(resp.read())
         self.assertIn(u"KCHVM0016E:", resp['reason'])
@@ -870,32 +877,32 @@ class RestTests(unittest.TestCase):
     def test_create_vm_with_bad_template_uri(self):
         req = json.dumps({'name': 'vm-bad-template',
                           'template': '/mytemplate'})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(400, resp.status)
         resp = json.loads(resp.read())
         self.assertIn(u"KCHVM0012E", resp['reason'])
 
     def test_create_vm_with_img_based_template(self):
         resp = json.loads(
-            self.request('/storagepools/default-pool/storagevolumes').read())
+            self.request('/plugins/kimchi/storagepools/default-pool/storagevolumes').read())
         self.assertEquals(0, len(resp))
 
         # Create a Template
         mock_base = '/tmp/mock.img'
         open(mock_base, 'w').close()
         req = json.dumps({'name': 'test', 'disks': [{'base': mock_base}]})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
-        req = json.dumps({'template': '/templates/test'})
-        resp = self.request('/vms', req, 'POST')
+        req = json.dumps({'template': '/plugins/kimchi/templates/test'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         self.assertEquals(202, resp.status)
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
 
         # Test storage volume created with backing store of base file
         resp = json.loads(
-            self.request('/storagepools/default-pool/storagevolumes').read())
+            self.request('/plugins/kimchi/storagepools/default-pool/storagevolumes').read())
         self.assertEquals(1, len(resp))
 
     def _create_pool(self, name):
@@ -904,24 +911,24 @@ class RestTests(unittest.TestCase):
                           'allocated': 5120,
                           'path': '/var/lib/libvirt/images/',
                           'type': 'dir'})
-        resp = self.request('/storagepools', req, 'POST')
+        resp = self.request('/plugins/kimchi/storagepools', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Verify the storage pool
-        storagepool = json.loads(self.request('/storagepools/%s'
+        storagepool = json.loads(self.request('/plugins/kimchi/storagepools/%s'
                                               % name).read())
         self.assertEquals('inactive', storagepool['state'])
         return name
 
     def _delete_pool(self, name):
         # Delete the storage pool
-        resp = self.request('/storagepools/%s' % name, '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/storagepools/%s' % name, '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
     def test_iso_scan_shallow(self):
         # fake environment preparation
         self._create_pool('pool-3')
-        self.request('/storagepools/pool-3/activate', '{}', 'POST')
+        self.request('/plugins/kimchi/storagepools/pool-3/activate', '{}', 'POST')
         params = {'name': 'fedora.iso',
                   'capacity': 1073741824,  # 1 GiB
                   'type': 'file',
@@ -930,7 +937,7 @@ class RestTests(unittest.TestCase):
         wait_task(self._task_lookup, task_info['id'])
 
         storagevolume = json.loads(self.request(
-            '/storagepools/kimchi_isos/storagevolumes/').read())[0]
+            '/plugins/kimchi/storagepools/kimchi_isos/storagevolumes/').read())[0]
         self.assertEquals('fedora.iso', storagevolume['name'])
         self.assertEquals('iso', storagevolume['format'])
         self.assertEquals('/var/lib/libvirt/images/fedora.iso',
@@ -948,83 +955,84 @@ class RestTests(unittest.TestCase):
                           'cdrom': storagevolume['path'],
                           'os_distro': storagevolume['os_distro'],
                           'os_version': storagevolume['os_version']})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Verify the template
-        t = json.loads(self.request('/templates/test').read())
+        t = json.loads(self.request('/plugins/kimchi/templates/test').read())
         self.assertEquals('test', t['name'])
         self.assertEquals('fedora', t['os_distro'])
         self.assertEquals('17', t['os_version'])
         self.assertEquals(get_template_default('old', 'memory'), t['memory'])
 
         # Deactivate or destroy scan pool return 405
-        resp = self.request('/storagepools/kimchi_isos/storagevolumes'
+        resp = self.request('/plugins/kimchi/storagepools/kimchi_isos/storagevolumes'
                             '/deactivate', '{}', 'POST')
         self.assertEquals(405, resp.status)
 
-        resp = self.request('/storagepools/kimchi_isos/storagevolumes',
+        resp = self.request('/plugins/kimchi/storagepools/kimchi_isos/storagevolumes',
                             '{}', 'DELETE')
         self.assertEquals(405, resp.status)
 
         # Delete the template
-        resp = self.request('/templates/%s' % t['name'], '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/templates/%s' % t['name'], '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
-        resp = self.request('/storagepools/pool-3/deactivate', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/storagepools/pool-3/deactivate', '{}', 'POST')
         self.assertEquals(200, resp.status)
         self._delete_pool('pool-3')
 
     def test_screenshot_refresh(self):
         # Create a VM
         req = json.dumps({'name': 'test', 'cdrom': fake_iso})
-        resp = self.request('/templates', req, 'POST')
-        req = json.dumps({'name': 'test-vm', 'template': '/templates/test'})
-        resp = self.request('/vms', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
+        req = json.dumps({'name': 'test-vm',
+                          'template': '/plugins/kimchi/templates/test'})
+        resp = self.request('/plugins/kimchi/vms', req, 'POST')
         task = json.loads(resp.read())
         wait_task(self._task_lookup, task['id'])
 
         # Test screenshot for shut-off state vm
-        resp = self.request('/vms/test-vm/screenshot')
+        resp = self.request('/plugins/kimchi/vms/test-vm/screenshot')
         self.assertEquals(404, resp.status)
 
         # Test screenshot for running vm
-        resp = self.request('/vms/test-vm/start', '{}', 'POST')
-        vm = json.loads(self.request('/vms/test-vm').read())
+        resp = self.request('/plugins/kimchi/vms/test-vm/start', '{}', 'POST')
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
 
         resp = self.request(vm['screenshot'], method='HEAD')
         self.assertEquals(200, resp.status)
         self.assertTrue(resp.getheader('Content-type').startswith('image'))
 
         # Test screenshot sub-resource redirect
-        resp = self.request('/vms/test-vm/screenshot')
+        resp = self.request('/plugins/kimchi/vms/test-vm/screenshot')
         self.assertEquals(200, resp.status)
         self.assertEquals('image/png', resp.getheader('content-type'))
         lastMod1 = resp.getheader('last-modified')
 
         # Take another screenshot instantly and compare the last Modified date
-        resp = self.request('/vms/test-vm/screenshot')
+        resp = self.request('/plugins/kimchi/vms/test-vm/screenshot')
         lastMod2 = resp.getheader('last-modified')
         self.assertEquals(lastMod2, lastMod1)
 
-        resp = self.request('/vms/test-vm/screenshot', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/vms/test-vm/screenshot', '{}', 'DELETE')
         self.assertEquals(405, resp.status)
 
         # No screenshot after stopped the VM
-        self.request('/vms/test-vm/poweroff', '{}', 'POST')
-        resp = self.request('/vms/test-vm/screenshot')
+        self.request('/plugins/kimchi/vms/test-vm/poweroff', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/vms/test-vm/screenshot')
         self.assertEquals(404, resp.status)
 
         # Picture link not available after VM deleted
-        self.request('/vms/test-vm/start', '{}', 'POST')
-        vm = json.loads(self.request('/vms/test-vm').read())
+        self.request('/plugins/kimchi/vms/test-vm/start', '{}', 'POST')
+        vm = json.loads(self.request('/plugins/kimchi/vms/test-vm').read())
         img_lnk = vm['screenshot']
-        self.request('/vms/test-vm', '{}', 'DELETE')
+        self.request('/plugins/kimchi/vms/test-vm', '{}', 'DELETE')
         resp = self.request(img_lnk)
         self.assertEquals(404, resp.status)
 
     def test_interfaces(self):
-        resp = self.request('/interfaces').read()
+        resp = self.request('/plugins/kimchi/interfaces').read()
         self.assertIn('name', resp)
         interfaces = json.loads(resp)
         keys = ['name', 'type', 'ipaddr', 'netmask', 'status']
@@ -1032,39 +1040,39 @@ class RestTests(unittest.TestCase):
             self.assertEquals(sorted(keys), sorted(interface.keys()))
 
     def _task_lookup(self, taskid):
-        return json.loads(self.request('/tasks/%s' % taskid).read())
+        return json.loads(self.request('/plugins/kimchi/tasks/%s' % taskid).read())
 
     def test_tasks(self):
-        id1 = add_task('/tasks/1', self._async_op, model.objstore)
-        id2 = add_task('/tasks/2', self._except_op, model.objstore)
-        id3 = add_task('/tasks/3', self._intermid_op, model.objstore)
+        id1 = add_task('/plugins/kimchi/tasks/1', self._async_op, model.objstore)
+        id2 = add_task('/plugins/kimchi/tasks/2', self._except_op, model.objstore)
+        id3 = add_task('/plugins/kimchi/tasks/3', self._intermid_op, model.objstore)
 
         target_uri = urllib2.quote('^/tasks/*', safe="")
         filter_data = 'status=running&target_uri=%s' % target_uri
-        tasks = json.loads(self.request('/tasks?%s' % filter_data).read())
+        tasks = json.loads(self.request('/plugins/kimchi/tasks?%s' % filter_data).read())
         self.assertEquals(3, len(tasks))
 
-        tasks = json.loads(self.request('/tasks').read())
+        tasks = json.loads(self.request('/plugins/kimchi/tasks').read())
         tasks_ids = [int(t['id']) for t in tasks]
         self.assertEquals(set([id1, id2, id3]) - set(tasks_ids), set([]))
         wait_task(self._task_lookup, id2)
-        foo2 = json.loads(self.request('/tasks/%s' % id2).read())
+        foo2 = json.loads(self.request('/plugins/kimchi/tasks/%s' % id2).read())
         keys = ['id', 'status', 'message', 'target_uri']
         self.assertEquals(sorted(keys), sorted(foo2.keys()))
         self.assertEquals('failed', foo2['status'])
         wait_task(self._task_lookup, id3)
-        foo3 = json.loads(self.request('/tasks/%s' % id3).read())
+        foo3 = json.loads(self.request('/plugins/kimchi/tasks/%s' % id3).read())
         self.assertEquals('in progress', foo3['message'])
         self.assertEquals('running', foo3['status'])
 
     def test_config(self):
-        resp = self.request('/config').read()
+        resp = self.request('/plugins/kimchi/config').read()
         conf = json.loads(resp)
         keys = ["display_proxy_port", "version"]
         self.assertEquals(keys, sorted(conf.keys()))
 
     def test_capabilities(self):
-        resp = self.request('/config/capabilities').read()
+        resp = self.request('/plugins/kimchi/config/capabilities').read()
         conf = json.loads(resp)
 
         keys = [u'libvirt_stream_protocols', u'qemu_stream', u'qemu_spice',
@@ -1074,11 +1082,11 @@ class RestTests(unittest.TestCase):
         self.assertEquals(sorted(keys), sorted(conf.keys()))
 
     def test_peers(self):
-        resp = self.request('/peers').read()
+        resp = self.request('/plugins/kimchi/peers').read()
         self.assertEquals([], json.loads(resp))
 
     def test_distros(self):
-        resp = self.request('/config/distros').read()
+        resp = self.request('/plugins/kimchi/config/distros').read()
         distros = json.loads(resp)
         for distro in distros:
             self.assertIn('name', distro)
@@ -1088,7 +1096,8 @@ class RestTests(unittest.TestCase):
 
         # Test in X86
         ident = "Fedora 20"
-        resp = self.request('/config/distros/%s' % urllib2.quote(ident)).read()
+        resp = self.request('/plugins/kimchi/config/distros/%s' %
+                            urllib2.quote(ident)).read()
         distro = json.loads(resp)
         if os.uname()[4] in ['x86_64', 'amd64']:
             self.assertEquals(distro['name'], ident)
@@ -1102,7 +1111,8 @@ class RestTests(unittest.TestCase):
 
         # Test in PPC
         ident = "Fedora 20 (PPC64)"
-        resp = self.request('/config/distros/%s' % urllib2.quote(ident)).read()
+        resp = self.request('/plugins/kimchi/config/distros/%s' %
+                            urllib2.quote(ident)).read()
         distro = json.loads(resp)
         if os.uname()[4] == 'ppc64':
             self.assertEquals(distro['name'], ident)
@@ -1115,48 +1125,48 @@ class RestTests(unittest.TestCase):
             self.assertIn('KCHDISTRO0001E', distro.get('reason'))
 
     def test_debugreports(self):
-        resp = request(host, ssl_port, '/debugreports')
+        resp = request(host, ssl_port, '/plugins/kimchi/debugreports')
         self.assertEquals(200, resp.status)
 
     def _report_delete(self, name):
-        request(host, ssl_port, '/debugreports/%s' % name, '{}', 'DELETE')
+        request(host, ssl_port, '/plugins/kimchi/debugreports/%s' % name, '{}', 'DELETE')
 
     def test_create_debugreport(self):
         req = json.dumps({'name': 'report1'})
         with RollbackContext() as rollback:
-            resp = request(host, ssl_port, '/debugreports', req, 'POST')
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports', req, 'POST')
             self.assertEquals(202, resp.status)
             task = json.loads(resp.read())
             # make sure the debugreport doesn't exist until the
             # the task is finished
             wait_task(self._task_lookup, task['id'])
             rollback.prependDefer(self._report_delete, 'report2')
-            resp = request(host, ssl_port, '/debugreports/report1')
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports/report1')
             debugreport = json.loads(resp.read())
             self.assertEquals("report1", debugreport['name'])
             self.assertEquals(200, resp.status)
             req = json.dumps({'name': 'report2'})
-            resp = request(host, ssl_port, '/debugreports/report1',
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports/report1',
                            req, 'PUT')
             self.assertEquals(303, resp.status)
 
     def test_debugreport_download(self):
         req = json.dumps({'name': 'report1'})
         with RollbackContext() as rollback:
-            resp = request(host, ssl_port, '/debugreports', req, 'POST')
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports', req, 'POST')
             self.assertEquals(202, resp.status)
             task = json.loads(resp.read())
             # make sure the debugreport doesn't exist until the
             # the task is finished
             wait_task(self._task_lookup, task['id'], 20)
             rollback.prependDefer(self._report_delete, 'report1')
-            resp = request(host, ssl_port, '/debugreports/report1')
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports/report1')
             debugreport = json.loads(resp.read())
             self.assertEquals("report1", debugreport['name'])
             self.assertEquals(200, resp.status)
-            resp = request(host, ssl_port, '/debugreports/report1/content')
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports/report1/content')
             self.assertEquals(200, resp.status)
-            resp = request(host, ssl_port, '/debugreports/report1')
+            resp = request(host, ssl_port, '/plugins/kimchi/debugreports/report1')
             debugre = json.loads(resp.read())
             resp = request(host, ssl_port, debugre['uri'])
             self.assertEquals(200, resp.status)
@@ -1167,7 +1177,7 @@ class RestTests(unittest.TestCase):
                 if field in t.keys():
                     self.assertEquals(t[field], res[field])
 
-        base_uri = '/host/repositories'
+        base_uri = '/plugins/kimchi/host/repositories'
         resp = self.request(base_uri)
         self.assertEquals(200, resp.status)
         # Already have one repo in Kimchi's system
diff --git a/plugins/kimchi/tests/test_server.py b/plugins/kimchi/tests/test_server.py
index 228a9b5..48a8589 100644
--- a/plugins/kimchi/tests/test_server.py
+++ b/plugins/kimchi/tests/test_server.py
@@ -132,13 +132,13 @@ class ServerTests(unittest.TestCase):
         """
         A non-existent path should return HTTP:404
         """
-        url_list = ['/doesnotexist', '/vms/blah']
+        url_list = ['/plugins/kimchi/doesnotexist', '/plugins/kimchi/vms/blah']
         for url in url_list:
             resp = self.request(url)
             self.assertEquals(404, resp.status)
 
         # Verify it works for DELETE too
-        resp = self.request('/templates/blah', '', 'DELETE')
+        resp = self.request('/plugins/kimchi/templates/blah', '', 'DELETE')
         self.assertEquals(404, resp.status)
 
     def test_accepts(self):
@@ -177,10 +177,10 @@ class ServerTests(unittest.TestCase):
 
     def test_auth_unprotected(self):
         hdrs = {'AUTHORIZATION': ''}
-        uris = ['/js/kimchi.min.js',
-                '/css/theme-default.min.css',
+        uris = ['/plugins/kimchi/js/kimchi.min.js',
+                '/plugins/kimchi/css/theme-default.min.css',
+                '/plugins/kimchi/images/icon-vm.png',
                 '/libs/jquery-1.10.0.min.js',
-                '/images/icon-vm.png',
                 '/login.html',
                 '/logout']
 
@@ -190,9 +190,9 @@ class ServerTests(unittest.TestCase):
 
     def test_auth_protected(self):
         hdrs = {'AUTHORIZATION': ''}
-        uris = ['/vms',
-                '/vms/doesnotexist',
-                '/tasks']
+        uris = ['/plugins/kimchi/vms',
+                '/plugins/kimchi/vms/doesnotexist',
+                '/plugins/kimchi/tasks']
 
         for uri in uris:
             resp = self.request(uri, None, 'GET', hdrs)
@@ -201,7 +201,7 @@ class ServerTests(unittest.TestCase):
     def test_auth_bad_creds(self):
         # Test HTTPBA
         hdrs = {'AUTHORIZATION': "Basic " + base64.b64encode("nouser:badpass")}
-        resp = self.request('/vms', None, 'GET', hdrs)
+        resp = self.request('/plugins/kimchi/vms', None, 'GET', hdrs)
         self.assertEquals(401, resp.status)
 
         # Test REST API
@@ -216,7 +216,7 @@ class ServerTests(unittest.TestCase):
         hdrs = {"X-Requested-With": "XMLHttpRequest"}
 
         # Try our request (Note that request() will add a valid HTTPBA header)
-        resp = self.request('/vms', None, 'GET', hdrs)
+        resp = self.request('/plugins/kimchi/vms', None, 'GET', hdrs)
         self.assertEquals(401, resp.status)
         self.assertEquals(None, resp.getheader('WWW-Authenticate'))
 
@@ -226,7 +226,7 @@ class ServerTests(unittest.TestCase):
                 'Accept': 'application/json'}
 
         # Test we are logged out
-        resp = self.request('/tasks', None, 'GET', hdrs)
+        resp = self.request('/plugins/kimchi/tasks', None, 'GET', hdrs)
         self.assertEquals(401, resp.status)
 
         # Execute a login call
@@ -246,7 +246,7 @@ class ServerTests(unittest.TestCase):
         hdrs['Cookie'] = cookie
 
         # Test we are logged in with the cookie
-        resp = self.request('/tasks', None, 'GET', hdrs)
+        resp = self.request('/plugins/kimchi/tasks', None, 'GET', hdrs)
         self.assertEquals(200, resp.status)
 
         # Execute a logout call
@@ -255,7 +255,7 @@ class ServerTests(unittest.TestCase):
         del hdrs['Cookie']
 
         # Test we are logged out
-        resp = self.request('/tasks', None, 'GET', hdrs)
+        resp = self.request('/plugins/kimchi/tasks', None, 'GET', hdrs)
         self.assertEquals(401, resp.status)
 
     def test_get_param(self):
@@ -265,22 +265,22 @@ class ServerTests(unittest.TestCase):
 
         # Create 2 different templates
         req = json.dumps({'name': 'test-tmpl1', 'cdrom': mockiso})
-        self.request('/templates', req, 'POST')
+        self.request('/plugins/kimchi/templates', req, 'POST')
 
         req = json.dumps({'name': 'test-tmpl2', 'cdrom': mockiso})
-        self.request('/templates', req, 'POST')
+        self.request('/plugins/kimchi/templates', req, 'POST')
 
         # Remove mock iso
         os.unlink(mockiso)
 
         # Get the templates
-        resp = self.request('/templates')
+        resp = self.request('/plugins/kimchi/templates')
         self.assertEquals(200, resp.status)
         res = json.loads(resp.read())
         self.assertEquals(2, len(res))
 
         # Get a specific template
-        resp = self.request('/templates?name=test-tmpl1')
+        resp = self.request('/plugins/kimchi/templates?name=test-tmpl1')
         self.assertEquals(200, resp.status)
         res = json.loads(resp.read())
         self.assertEquals(1, len(res))
diff --git a/plugins/kimchi/tests/test_template.py b/plugins/kimchi/tests/test_template.py
index b263b63..a1a828b 100644
--- a/plugins/kimchi/tests/test_template.py
+++ b/plugins/kimchi/tests/test_template.py
@@ -61,58 +61,58 @@ class TemplateTests(unittest.TestCase):
         model.reset()
 
     def test_tmpl_lifecycle(self):
-        resp = self.request('/templates')
+        resp = self.request('/plugins/kimchi/templates')
         self.assertEquals(200, resp.status)
         self.assertEquals(0, len(json.loads(resp.read())))
 
         # Create a template without cdrom and disk specified fails with 400
         t = {'name': 'test', 'os_distro': 'ImagineOS',
              'os_version': '1.0', 'memory': 1024, 'cpus': 1,
-             'storagepool': '/storagepools/alt'}
+             'storagepool': '/plugins/kimchi/storagepools/alt'}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(400, resp.status)
 
         # Create a template
         t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Verify the template
         keys = ['name', 'icon', 'invalid', 'os_distro', 'os_version', 'cpus',
                 'memory', 'cdrom', 'disks', 'storagepool', 'networks',
                 'folder', 'graphics', 'cpu_info']
-        tmpl = json.loads(self.request('/templates/test').read())
+        tmpl = json.loads(self.request('/plugins/kimchi/templates/test').read())
         self.assertEquals(sorted(tmpl.keys()), sorted(keys))
 
         # Verify if default disk format was configured
         self.assertEquals(tmpl['disks'][0]['format'], 'qcow2')
 
         # Clone a template
-        resp = self.request('/templates/test/clone', '{}', 'POST')
+        resp = self.request('/plugins/kimchi/templates/test/clone', '{}', 'POST')
         self.assertEquals(303, resp.status)
 
         # Verify the cloned template
-        tmpl_cloned = json.loads(self.request('/templates/test-clone1').read())
+        tmpl_cloned = json.loads(self.request('/plugins/kimchi/templates/test-clone1').read())
         del tmpl['name']
         del tmpl_cloned['name']
         self.assertEquals(tmpl, tmpl_cloned)
 
         # Delete the cloned template
-        resp = self.request('/templates/test-clone1', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/templates/test-clone1', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Create a template with same name fails with 400
         req = json.dumps({'name': 'test', 'cdrom': '/tmp/mock.iso'})
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(400, resp.status)
 
         # Create an image based template
         open('/tmp/mock.img', 'w').close()
         t = {'name': 'test_img_template', 'disks': [{'base': '/tmp/mock.img'}]}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
         os.remove('/tmp/mock.img')
 
@@ -120,24 +120,24 @@ class TemplateTests(unittest.TestCase):
         t = {'name': 'test-format', 'cdrom': '/tmp/mock.iso',
              'disks': [{'index': 0, 'size': 10, 'format': 'vmdk'}]}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
-        tmpl = json.loads(self.request('/templates/test-format').read())
+        tmpl = json.loads(self.request('/plugins/kimchi/templates/test-format').read())
         self.assertEquals(tmpl['disks'][0]['format'], 'vmdk')
 
     def test_customized_tmpl(self):
         # Create a template
         t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
-        tmpl = json.loads(self.request('/templates/test').read())
+        tmpl = json.loads(self.request('/plugins/kimchi/templates/test').read())
 
         # Update name
         new_name = u'kīмсhīTmpl'
-        new_tmpl_uri = '/templates/%s' % new_name.encode('utf-8')
+        new_tmpl_uri = '/plugins/kimchi/templates/%s' % new_name.encode('utf-8')
         req = json.dumps({'name': new_name})
-        resp = self.request('/templates/test', req, 'PUT')
+        resp = self.request('/plugins/kimchi/templates/test', req, 'PUT')
         self.assertEquals(303, resp.status)
         resp = self.request(new_tmpl_uri)
         update_tmpl = json.loads(resp.read())
@@ -147,11 +147,11 @@ class TemplateTests(unittest.TestCase):
         self.assertEquals(tmpl, update_tmpl)
 
         # Update icon
-        req = json.dumps({'icon': 'images/icon-fedora.png'})
+        req = json.dumps({'icon': 'kimchi/images/icon-fedora.png'})
         resp = self.request(new_tmpl_uri, req, 'PUT')
         self.assertEquals(200, resp.status)
         update_tmpl = json.loads(resp.read())
-        self.assertEquals('images/icon-fedora.png', update_tmpl['icon'])
+        self.assertEquals('kimchi/images/icon-fedora.png', update_tmpl['icon'])
 
         # Update os_distro and os_version
         req = json.dumps({'os_distro': 'fedora', 'os_version': '21'})
@@ -246,7 +246,7 @@ class TemplateTests(unittest.TestCase):
         # Create a template
         t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Create networks to be used for testing
@@ -257,7 +257,7 @@ class TemplateTests(unittest.TestCase):
 
         # Verify the current system has at least one interface to create a
         # bridged network
-        interfaces = json.loads(self.request('/interfaces?type=nic').read())
+        interfaces = json.loads(self.request('/plugins/kimchi/interfaces?type=nic').read())
         if len(interfaces) > 0:
             iface = interfaces[0]['name']
             networks.append({'name': u'bridge-network', 'connection': 'bridge',
@@ -267,25 +267,25 @@ class TemplateTests(unittest.TestCase):
 
         tmpl_nets = []
         for net in networks:
-            self.request('/networks', json.dumps(net), 'POST')
+            self.request('/plugins/kimchi/networks', json.dumps(net), 'POST')
             tmpl_nets.append(net['name'])
             req = json.dumps({'networks': tmpl_nets})
-            resp = self.request('/templates/test', req, 'PUT')
+            resp = self.request('/plugins/kimchi/templates/test', req, 'PUT')
             self.assertEquals(200, resp.status)
 
     def test_customized_storagepool(self):
         # Create a template
         t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # MockModel always returns 2 partitions (vdx, vdz)
-        partitions = json.loads(self.request('/host/partitions').read())
+        partitions = json.loads(self.request('/plugins/kimchi/host/partitions').read())
         devs = [dev['path'] for dev in partitions]
 
         # MockModel always returns 3 FC devices
-        fc_devs = json.loads(self.request('/host/devices?_cap=fc_host').read())
+        fc_devs = json.loads(self.request('/plugins/kimchi/host/devices?_cap=fc_host').read())
         fc_devs = [dev['name'] for dev in fc_devs]
 
         poolDefs = [
@@ -303,8 +303,8 @@ class TemplateTests(unittest.TestCase):
              'source': {'devices': [devs[0]]}}]
 
         for pool in poolDefs:
-            self.request('/storagepools', json.dumps(pool), 'POST')
-            pool_uri = '/storagepools/%s' % pool['name'].encode('utf-8')
+            self.request('/plugins/kimchi/storagepools', json.dumps(pool), 'POST')
+            pool_uri = '/plugins/kimchi/storagepools/%s' % pool['name'].encode('utf-8')
             self.request(pool_uri + '/activate', '{}', 'POST')
 
             req = None
@@ -319,44 +319,44 @@ class TemplateTests(unittest.TestCase):
                 req = json.dumps({'storagepool': pool_uri})
 
             if req is not None:
-                resp = self.request('/templates/test', req, 'PUT')
+                resp = self.request('/plugins/kimchi/templates/test', req, 'PUT')
                 self.assertEquals(200, resp.status)
 
     def test_tmpl_integrity(self):
         # Create a network and a pool for testing template integrity
         net = {'name': u'nat-network', 'connection': 'nat'}
-        self.request('/networks', json.dumps(net), 'POST')
+        self.request('/plugins/kimchi/networks', json.dumps(net), 'POST')
 
         pool = {'type': 'dir', 'name': 'dir-pool', 'path': '/tmp/dir-pool'}
-        self.request('/storagepools', json.dumps(pool), 'POST')
-        pool_uri = '/storagepools/%s' % pool['name'].encode('utf-8')
+        self.request('/plugins/kimchi/storagepools', json.dumps(pool), 'POST')
+        pool_uri = '/plugins/kimchi/storagepools/%s' % pool['name'].encode('utf-8')
         self.request(pool_uri + '/activate', '{}', 'POST')
 
         # Create a template using the custom network and pool
         t = {'name': 'test', 'cdrom': '/tmp/mock.iso',
              'networks': ['nat-network'],
-             'storagepool': '/storagepools/dir-pool'}
+             'storagepool': '/plugins/kimchi/storagepools/dir-pool'}
         req = json.dumps(t)
-        resp = self.request('/templates', req, 'POST')
+        resp = self.request('/plugins/kimchi/templates', req, 'POST')
         self.assertEquals(201, resp.status)
 
         # Try to delete network
         # It should fail as it is associated to a template
-        resp = self.request('/networks/nat-network', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/networks/nat-network', '{}', 'DELETE')
         self.assertIn("KCHNET0017E", json.loads(resp.read())["reason"])
 
         # Update template to release network and then delete it
         params = {'networks': []}
         req = json.dumps(params)
-        self.request('/templates/test', req, 'PUT')
-        resp = self.request('/networks/nat-network', '{}', 'DELETE')
+        self.request('/plugins/kimchi/templates/test', req, 'PUT')
+        resp = self.request('/plugins/kimchi/networks/nat-network', '{}', 'DELETE')
         self.assertEquals(204, resp.status)
 
         # Try to delete the storagepool
         # It should fail as it is associated to a template
-        resp = self.request('/storagepools/dir-pool', '{}', 'DELETE')
+        resp = self.request('/plugins/kimchi/storagepools/dir-pool', '{}', 'DELETE')
         self.assertEquals(400, resp.status)
 
         # Verify the template
-        res = json.loads(self.request('/templates/test').read())
+        res = json.loads(self.request('/plugins/kimchi/templates/test').read())
         self.assertEquals(res['invalid']['cdrom'], ['/tmp/mock.iso'])
diff --git a/plugins/kimchi/ui/css/theme-default/guest-edit.css b/plugins/kimchi/ui/css/theme-default/guest-edit.css
index cf71b78..b661159 100644
--- a/plugins/kimchi/ui/css/theme-default/guest-edit.css
+++ b/plugins/kimchi/ui/css/theme-default/guest-edit.css
@@ -134,7 +134,7 @@
 }
 
 .guest-edit-snapshot .icon {
-    background: url('../../images/theme-default/kimchi-loading15x15.gif') no-repeat;
+    background: url('../images/theme-default/kimchi-loading15x15.gif') no-repeat;
     display: block;
     width: 16px;
     height: 16px;
@@ -256,12 +256,12 @@
 }
 
 .guest-edit-permission .pam .body .item .user-icon {
-    background: url('/images/theme-default/user.png') no-repeat scroll;
+    background: url('../images/theme-default/user.png') no-repeat scroll;
     background-size: 15px 15px;
 }
 
 .guest-edit-permission .pam .body .item .group-icon {
-    background: url('/images/theme-default/group.png') no-repeat scroll;
+    background: url('../images/theme-default/group.png') no-repeat scroll;
     background-size: 15px 15px;
 }
 
diff --git a/plugins/kimchi/ui/css/theme-default/host.css b/plugins/kimchi/ui/css/theme-default/host.css
index 9e9cb01..a0cccb1 100644
--- a/plugins/kimchi/ui/css/theme-default/host.css
+++ b/plugins/kimchi/ui/css/theme-default/host.css
@@ -33,7 +33,7 @@
 }
 
 .host-panel .logo {
-    background: url("../images/icon-vm.png") no-repeat left top;
+    background: url("plugins/kimchi/images/icon-vm.png") no-repeat left top;
     height: 128px;
     width: 128px;
 }
@@ -220,7 +220,7 @@
 }
 
 #id-debug-img {
-    background: url(../../images/theme-default/kimchi-loading15x15.gif) 12px
+    background: url(../images/theme-default/kimchi-loading15x15.gif) 12px
             center no-repeat;
     padding-left: 23px;
 }
diff --git a/plugins/kimchi/ui/css/theme-default/list.css b/plugins/kimchi/ui/css/theme-default/list.css
index 718c855..8c78623 100644
--- a/plugins/kimchi/ui/css/theme-default/list.css
+++ b/plugins/kimchi/ui/css/theme-default/list.css
@@ -312,7 +312,7 @@
 }
 
 .guest-pending .icon {
-    background: url('../../images/theme-default/kimchi-loading15x15.gif') no-repeat;
+    background: url('../images/theme-default/kimchi-loading15x15.gif') no-repeat;
     display: inline-block;
     width: 20px;
     height: 20px;
diff --git a/plugins/kimchi/ui/css/theme-default/network.css b/plugins/kimchi/ui/css/theme-default/network.css
index e5a8e47..fc8a24f 100644
--- a/plugins/kimchi/ui/css/theme-default/network.css
+++ b/plugins/kimchi/ui/css/theme-default/network.css
@@ -92,7 +92,7 @@
 }
 
 .network .list .nw-loading {
-    background: #c0c0c0 url(../../images/theme-default/loading.gif)
+    background: #c0c0c0 url(../images/theme-default/loading.gif)
                 center no-repeat;
 }
 
@@ -264,4 +264,4 @@
 
 #networkConfig {
     padding-left: 30px;
-}
\ No newline at end of file
+}
diff --git a/plugins/kimchi/ui/css/theme-default/report-rename.css b/plugins/kimchi/ui/css/theme-default/report-rename.css
index 84bdf17..2fb2698 100644
--- a/plugins/kimchi/ui/css/theme-default/report-rename.css
+++ b/plugins/kimchi/ui/css/theme-default/report-rename.css
@@ -36,4 +36,4 @@
     color: #999999;
     font-weight: lighter;
     font-family: 'Helvetica Neue', Helvetica, Arial;
-}
\ No newline at end of file
+}
diff --git a/plugins/kimchi/ui/css/theme-default/storage.css b/plugins/kimchi/ui/css/theme-default/storage.css
index 771cc7f..31e8f5b 100644
--- a/plugins/kimchi/ui/css/theme-default/storage.css
+++ b/plugins/kimchi/ui/css/theme-default/storage.css
@@ -489,7 +489,7 @@
 
 #pool-loading {
     margin: 10px 15px;
-    background: #C0C0C0 url(../../images/theme-default/loading.gif) 7px
+    background: #C0C0C0 url(../images/theme-default/loading.gif) 7px
                 center no-repeat;
     padding: 0 20px 0 26px;
 }
diff --git a/plugins/kimchi/ui/css/theme-default/template_add.css b/plugins/kimchi/ui/css/theme-default/template_add.css
index 668c785..f1e28c5 100644
--- a/plugins/kimchi/ui/css/theme-default/template_add.css
+++ b/plugins/kimchi/ui/css/theme-default/template_add.css
@@ -175,7 +175,7 @@
     margin: 0 5px 0 0;
     border: 1px solid #CCCCCC;
     border-radius: 8px;
-    background: url(../../images/icon-vm.png) center center no-repeat;
+    background: url(../images/icon-vm.png) center center no-repeat;
     background-size: 58px;
 }
 
@@ -284,13 +284,13 @@
 
 #iso-search-loading {
     margin: 10px 15px;
-    background: #C0C0C0 url(../../images/theme-default/loading.gif) 7px
+    background: #C0C0C0 url(../images/theme-default/loading.gif) 7px
                 center no-repeat;
     padding: 0 20px 0 26px;
 }
 
 #iso-more-loading {
-    background: #C0C0C0 url(../../images/theme-default/loading.gif) 7px
+    background: #C0C0C0 url(../images/theme-default/loading.gif) 7px
                 center no-repeat;
     padding: 0 20px 0 26px;
 }
diff --git a/plugins/kimchi/ui/js/src/kimchi.api.js b/plugins/kimchi/ui/js/src/kimchi.api.js
index 81e44fd..d4d0c83 100644
--- a/plugins/kimchi/ui/js/src/kimchi.api.js
+++ b/plugins/kimchi/ui/js/src/kimchi.api.js
@@ -17,8 +17,6 @@
  */
 var kimchi = {
 
-    url : "../../../",
-
     widget: {},
 
     trackingTasks: [],
@@ -54,7 +52,7 @@ var kimchi = {
     getCapabilities : function(suc, err, done) {
         done = typeof done !== 'undefined' ? done: function(){};
         wok.requestJSON({
-            url : "config/capabilities",
+            url : "plugins/kimchi/config/capabilities",
             type : "GET",
             contentType : "application/json",
             dataType : "json",
@@ -69,7 +67,7 @@ var kimchi = {
      */
     getI18n: function(suc, err, url, sync) {
         wok.requestJSON({
-            url : url ? url : 'i18n.json',
+            url : url ? url : 'plugins/kimchi/i18n.json',
             type : 'GET',
             resend: true,
             dataType : 'json',
@@ -84,7 +82,7 @@ var kimchi = {
      */
     getHost: function(suc, err) {
         wok.requestJSON({
-            url : 'host',
+            url : 'plugins/kimchi/host',
             type : 'GET',
             resend: true,
             contentType : 'application/json',
@@ -99,7 +97,7 @@ var kimchi = {
      */
     getHostStats : function(suc, err) {
         wok.requestJSON({
-            url : 'host/stats',
+            url : 'plugins/kimchi/host/stats',
             type : 'GET',
             contentType : 'application/json',
             headers: {'Wok-Robot': 'wok-robot'},
@@ -114,7 +112,7 @@ var kimchi = {
      */
     getHostStatsHistory : function(suc, err) {
         wok.requestJSON({
-            url : 'host/stats/history',
+            url : 'plugins/kimchi/host/stats/history',
             type : 'GET',
             resend: true,
             contentType : 'application/json',
@@ -138,7 +136,7 @@ var kimchi = {
      */
     createVM : function(settings, suc, err) {
         wok.requestJSON({
-            url : "vms",
+            url : "plugins/kimchi/vms",
             type : "POST",
             contentType : "application/json",
             data : JSON.stringify(settings),
@@ -154,7 +152,7 @@ var kimchi = {
      */
     createTemplate : function(settings, suc, err) {
         wok.requestJSON({
-            url : "templates",
+            url : "plugins/kimchi/templates",
             type : "POST",
             contentType : "application/json",
             data : JSON.stringify(settings),
@@ -166,7 +164,7 @@ var kimchi = {
 
     deleteTemplate : function(tem, suc, err) {
         wok.requestJSON({
-            url : 'templates/' + encodeURIComponent(tem),
+            url : 'plugins/kimchi/templates/' + encodeURIComponent(tem),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -177,7 +175,7 @@ var kimchi = {
 
     cloneTemplate : function(tem, suc, err) {
         wok.requestJSON({
-            url : 'templates/' + encodeURIComponent(tem) + "/clone",
+            url : 'plugins/kimchi/templates/' + encodeURIComponent(tem) + "/clone",
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -188,7 +186,7 @@ var kimchi = {
 
     listTemplates : function(suc, err) {
         wok.requestJSON({
-            url : 'templates',
+            url : 'plugins/kimchi/templates',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -202,7 +200,7 @@ var kimchi = {
      */
     retrieveTemplate : function(templateName, suc, err) {
         wok.requestJSON({
-            url : "templates/" + encodeURIComponent(templateName),
+            url : 'plugins/kimchi/templates/' + encodeURIComponent(templateName),
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json'
@@ -216,7 +214,7 @@ var kimchi = {
      */
     updateTemplate : function(name, settings, suc, err) {
         $.ajax({
-            url : "templates/" + encodeURIComponent(name),
+            url : 'plugins/kimchi/templates/' + encodeURIComponent(name),
             type : 'PUT',
             contentType : 'application/json',
             data : JSON.stringify(settings),
@@ -232,7 +230,7 @@ var kimchi = {
      */
     createStoragePool : function(settings, suc, err) {
         wok.requestJSON({
-            url : 'storagepools',
+            url : 'plugins/kimchi/storagepools',
             type : 'POST',
             contentType : 'application/json',
             data : JSON.stringify(settings),
@@ -242,7 +240,7 @@ var kimchi = {
 
     updateStoragePool : function(name, content, suc, err) {
         $.ajax({
-            url : "storagepools/" + encodeURIComponent(name),
+            url : "plugins/kimchi/storagepools/" + encodeURIComponent(name),
             type : 'PUT',
             contentType : 'application/json',
             dataType : 'json',
@@ -254,7 +252,7 @@ var kimchi = {
 
     startVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) + '/start',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/start',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -265,7 +263,7 @@ var kimchi = {
 
     poweroffVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) + '/poweroff',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/poweroff',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -276,7 +274,7 @@ var kimchi = {
 
     shutdownVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) + '/shutdown',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/shutdown',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -287,7 +285,7 @@ var kimchi = {
 
     resetVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) + '/reset',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/reset',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -298,7 +296,7 @@ var kimchi = {
 
     suspendVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) + '/suspend',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/suspend',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -309,7 +307,7 @@ var kimchi = {
 
     resumeVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) + '/resume',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/resume',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -327,7 +325,7 @@ var kimchi = {
      */
     retrieveVM : function(vm, suc, err) {
         $.ajax({
-            url : 'vms/' + encodeURIComponent(vm),
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm),
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -341,7 +339,7 @@ var kimchi = {
      */
     updateVM : function(name, settings, suc, err) {
         $.ajax({
-            url : "vms/" + encodeURIComponent(name),
+            url : "plugins/kimchi/vms/" + encodeURIComponent(name),
             type : 'PUT',
             contentType : 'application/json',
             data : JSON.stringify(settings),
@@ -353,7 +351,7 @@ var kimchi = {
 
     deleteVM : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm),
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -364,18 +362,19 @@ var kimchi = {
 
     vncToVM : function(vm) {
         wok.requestJSON({
-            url : 'config',
+            url : 'plugins/kimchi/config',
             type : 'GET',
             dataType : 'json'
         }).done(function(data, textStatus, xhr) {
             proxy_port = data['display_proxy_port'];
             wok.requestJSON({
-                url : "vms/" + encodeURIComponent(vm) + "/connect",
+                url : "plugins/kimchi/vms/" + encodeURIComponent(vm) + "/connect",
                 type : "POST",
                 dataType : "json"
             }).done(function() {
                 url = 'https://' + location.hostname + ':' + proxy_port;
-                url += "/console.html?url=" + encodeURIComponent("novnc/vnc_auto.html");
+                url += "/console.html?url=";
+                url += encodeURIComponent("plugins/kimchi/novnc/vnc_auto.html");
                 url += "&port=" + proxy_port;
                 /*
                  * From python documentation base64.urlsafe_b64encode(s)
@@ -396,19 +395,19 @@ var kimchi = {
 
     spiceToVM : function(vm) {
         wok.requestJSON({
-            url : 'config',
+            url : 'plugins/kimchi/config',
             type : 'GET',
             dataType : 'json'
         }).done(function(data, textStatus, xhr) {
             proxy_port = data['display_proxy_port'];
             wok.requestJSON({
-                url : "vms/" + encodeURIComponent(vm) + "/connect",
+                url : "plugins/kimchi/vms/" + encodeURIComponent(vm) + "/connect",
                 type : "POST",
                 dataType : "json"
             }).done(function(data, textStatus, xhr) {
                 url = 'https://' + location.hostname + ':' + proxy_port;
-                url += "/console.html?url=spice_auto.html&port=" + proxy_port;
-                url += "&listen=" + location.hostname;
+                url += "/console.html?url=plugins/kimchi/spice_auto.html";
+                url += "&port=" + proxy_port + "&listen=" + location.hostname;
                 /*
                  * From python documentation base64.urlsafe_b64encode(s)
                  * substitutes - instead of + and _ instead of / in the
@@ -428,7 +427,7 @@ var kimchi = {
 
     listVMs : function(suc, err) {
         wok.requestJSON({
-            url : 'vms',
+            url : 'plugins/kimchi/vms',
             type : 'GET',
             contentType : 'application/json',
             headers: {'Wok-Robot': 'wok-robot'},
@@ -441,7 +440,7 @@ var kimchi = {
 
     listTemplates : function(suc, err) {
         wok.requestJSON({
-            url : 'templates',
+            url : 'plugins/kimchi/templates',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -453,7 +452,7 @@ var kimchi = {
 
     listStoragePools : function(suc, err) {
         wok.requestJSON({
-            url : 'storagepools',
+            url : 'plugins/kimchi/storagepools',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -465,7 +464,7 @@ var kimchi = {
 
     listStorageVolumes : function(poolName, suc, err) {
         $.ajax({
-            url : 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes',
+            url : 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName) + '/storagevolumes',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -476,7 +475,7 @@ var kimchi = {
 
     listIsos : function(suc, err) {
         wok.requestJSON({
-            url : 'storagepools/kimchi_isos/storagevolumes',
+            url : 'plugins/kimchi/storagepools/kimchi_isos/storagevolumes',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -487,7 +486,7 @@ var kimchi = {
 
     listDistros : function(suc, err) {
         wok.requestJSON({
-            url : 'config/distros',
+            url : 'plugins/kimchi/config/distros',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -549,7 +548,7 @@ var kimchi = {
 
     getTask : function(taskId, suc, err) {
         wok.requestJSON({
-            url : 'tasks/' + encodeURIComponent(taskId),
+            url : 'plugins/kimchi/tasks/' + encodeURIComponent(taskId),
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -560,7 +559,7 @@ var kimchi = {
 
     getTasksByFilter : function(filter, suc, err, sync) {
         wok.requestJSON({
-            url : 'tasks?' + filter,
+            url : 'plugins/kimchi/tasks?' + filter,
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -591,7 +590,7 @@ var kimchi = {
 
     deleteStoragePool : function(poolName, suc, err) {
         $.ajax({
-            url : 'storagepools/' + encodeURIComponent(poolName),
+            url : 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -603,7 +602,7 @@ var kimchi = {
     changePoolState : function(poolName, state, suc, err) {
         if (state === 'activate' || state === 'deactivate')
             $.ajax({
-                url : 'storagepools/' + encodeURIComponent(poolName) + '/' + state,
+                url : 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName) + '/' + state,
                 type : 'POST',
                 contentType : 'application/json',
                 dataType : 'json',
@@ -627,7 +626,7 @@ var kimchi = {
 
     listNetworks : function(suc, err) {
         wok.requestJSON({
-            url : 'networks',
+            url : 'plugins/kimchi/networks',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -642,7 +641,7 @@ var kimchi = {
     toggleNetwork : function(name, on, suc, err) {
         var action = on ? "activate" : "deactivate";
         wok.requestJSON({
-            url : 'networks/' + encodeURIComponent(name) + '/' + action,
+            url : 'plugins/kimchi/networks/' + encodeURIComponent(name) + '/' + action,
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -655,7 +654,7 @@ var kimchi = {
 
     createNetwork : function(network, suc, err) {
         wok.requestJSON({
-            url : 'networks',
+            url : 'plugins/kimchi/networks',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -669,7 +668,7 @@ var kimchi = {
 
     getInterfaces : function(suc, err) {
         wok.requestJSON({
-            url : 'interfaces',
+            url : 'plugins/kimchi/interfaces',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -683,7 +682,7 @@ var kimchi = {
 
     deleteNetwork : function(name, suc, err) {
         wok.requestJSON({
-            url : 'networks/' + encodeURIComponent(name),
+            url : 'plugins/kimchi/networks/' + encodeURIComponent(name),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -696,7 +695,7 @@ var kimchi = {
 
     listReports : function(suc, err) {
         wok.requestJSON({
-            url : 'debugreports',
+            url : 'plugins/kimchi/debugreports',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -739,7 +738,7 @@ var kimchi = {
         };
 
         wok.requestJSON({
-            url : 'debugreports',
+            url : 'plugins/kimchi/debugreports',
             type : "POST",
             contentType : "application/json",
             data : JSON.stringify(settings),
@@ -751,7 +750,7 @@ var kimchi = {
 
     renameReport : function(name, settings, suc, err) {
         $.ajax({
-            url : "debugreports/" + encodeURIComponent(name),
+            url : "plugins/kimchi/debugreports/" + encodeURIComponent(name),
             type : 'PUT',
             contentType : 'application/json',
             data : JSON.stringify(settings),
@@ -764,7 +763,7 @@ var kimchi = {
     deleteReport: function(settings, suc, err) {
         var reportName = encodeURIComponent(settings['name']);
         wok.requestJSON({
-            url : 'debugreports/' + reportName,
+            url : 'plugins/kimchi/debugreports/' + reportName,
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -779,7 +778,7 @@ var kimchi = {
 
     shutdown: function(settings, suc, err) {
         var reboot = settings && settings['reboot'] === true;
-        var url = 'host/' + (reboot ? 'reboot' : 'shutdown');
+        var url = 'plugins/kimchi/host/' + (reboot ? 'reboot' : 'shutdown');
         wok.requestJSON({
             url : url,
             type : 'POST',
@@ -792,7 +791,7 @@ var kimchi = {
 
     listHostPartitions : function(suc, err) {
         wok.requestJSON({
-            url : 'host/partitions',
+            url : 'plugins/kimchi/host/partitions',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -802,7 +801,7 @@ var kimchi = {
     },
 
     getStorageServers: function(type, suc, err) {
-        var url = 'storageservers?_target_type=' + type;
+        var url = 'plugins/kimchi/storageservers?_target_type=' + type;
         wok.requestJSON({
             url : url,
             type : 'GET',
@@ -816,7 +815,7 @@ var kimchi = {
     },
 
     getStorageTargets: function(server,type, suc, err) {
-        var url = 'storageservers/' + server + '/storagetargets?_target_type=' + type;
+        var url = 'plugins/kimchi/storageservers/' + server + '/storagetargets?_target_type=' + type;
         wok.requestJSON({
             url : url,
             type : 'GET',
@@ -829,7 +828,7 @@ var kimchi = {
     },
 
     getStoragePool: function(poolName, suc, err) {
-        var url = kimchi.url + 'storagepools/' + encodeURIComponent(poolName);
+        var url = 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName);
         wok.requestJSON({
             url : url,
             type : 'GET',
@@ -842,7 +841,7 @@ var kimchi = {
     },
 
     getStoragePoolVolume: function(poolName, volumeName, suc, err) {
-        var url = 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes/' + encodeURIComponent(volumeName);
+        var url = 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName) + '/storagevolumes/' + encodeURIComponent(volumeName);
         wok.requestJSON({
             url : url,
             type : 'GET',
@@ -858,7 +857,7 @@ var kimchi = {
         var vm = encodeURIComponent(settings['vm']);
         delete settings['vm'];
         wok.requestJSON({
-            url : 'vms/' + vm + '/storages',
+            url : 'plugins/kimchi/vms/' + vm + '/storages',
             type : 'POST',
             contentType : 'application/json',
             data : JSON.stringify(settings),
@@ -872,7 +871,7 @@ var kimchi = {
         var vm = encodeURIComponent(settings['vm']);
         var dev = encodeURIComponent(settings['dev']);
         wok.requestJSON({
-            url : "vms/" + vm + '/storages/' + dev,
+            url : "plugins/kimchi/vms/" + vm + '/storages/' + dev,
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -885,7 +884,7 @@ var kimchi = {
         var vm = encodeURIComponent(settings['vm']);
         var dev = encodeURIComponent(settings['dev']);
         wok.requestJSON({
-            url : 'vms/' + vm + '/storages/' + dev,
+            url : 'plugins/kimchi/vms/' + vm + '/storages/' + dev,
             type : 'PUT',
             contentType : 'application/json',
             data : JSON.stringify({
@@ -901,8 +900,8 @@ var kimchi = {
         var vm = settings['vm'];
         var dev = settings['dev'];
         wok.requestJSON({
-            url : 'vms/' + encodeURIComponent(vm) +
-                      '/storages/' + encodeURIComponent(dev),
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) +
+                  '/storages/' + encodeURIComponent(dev),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -914,7 +913,7 @@ var kimchi = {
     listVMStorages : function(params, suc, err) {
         var vm = encodeURIComponent(params['vm']);
         var type = params['storageType'];
-        var url = 'vms/' + vm + '/storages';
+        var url = 'plugins/kimchi/vms/' + vm + '/storages';
         if(type) {
             url += '?type=' + type;
         }
@@ -930,7 +929,7 @@ var kimchi = {
 
     listSoftwareUpdates : function(suc, err) {
         wok.requestJSON({
-            url : 'host/packagesupdate',
+            url : 'plugins/kimchi/host/packagesupdate',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -970,7 +969,7 @@ var kimchi = {
         };
 
         wok.requestJSON({
-            url : 'host/swupdate',
+            url : 'plugins/kimchi/host/swupdate',
             type : "POST",
             contentType : "application/json",
             dataType : "json",
@@ -981,7 +980,7 @@ var kimchi = {
 
     createRepository : function(settings, suc, err) {
         wok.requestJSON({
-            url : "host/repositories",
+            url : "plugins/kimchi/host/repositories",
             type : "POST",
             contentType : "application/json",
             data : JSON.stringify(settings),
@@ -994,7 +993,7 @@ var kimchi = {
     retrieveRepository : function(repository, suc, err) {
         var reposID = encodeURIComponent(repository);
         wok.requestJSON({
-            url : "host/repositories/" + reposID,
+            url : "plugins/kimchi/host/repositories/" + reposID,
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1006,7 +1005,7 @@ var kimchi = {
     updateRepository : function(name, settings, suc, err) {
         var reposID = encodeURIComponent(name);
         $.ajax({
-            url : "host/repositories/" + reposID,
+            url : "plugins/kimchi/host/repositories/" + reposID,
             type : 'PUT',
             contentType : 'application/json',
             data : JSON.stringify(settings),
@@ -1019,8 +1018,8 @@ var kimchi = {
     enableRepository : function(name, enable, suc, err) {
         var reposID = encodeURIComponent(name);
         $.ajax({
-            url : "host/repositories/" + reposID +
-                '/' + (enable === true ? 'enable' : 'disable'),
+            url : "plugins/kimchi/host/repositories/" + reposID +
+                  '/' + (enable === true ? 'enable' : 'disable'),
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -1032,7 +1031,7 @@ var kimchi = {
     deleteRepository : function(repository, suc, err) {
         var reposID = encodeURIComponent(repository);
         wok.requestJSON({
-            url : 'host/repositories/' + reposID,
+            url : 'plugins/kimchi/host/repositories/' + reposID,
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -1043,7 +1042,7 @@ var kimchi = {
 
     listRepositories : function(suc, err) {
         wok.requestJSON({
-            url : 'host/repositories',
+            url : 'plugins/kimchi/host/repositories',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1054,7 +1053,7 @@ var kimchi = {
     },
 
     getHostFCDevices: function(suc, err) {
-        var url = 'host/devices?_cap=fc_host';
+        var url = 'plugins/kimchi/host/devices?_cap=fc_host';
         wok.requestJSON({
             url : url,
             type : 'GET',
@@ -1068,7 +1067,7 @@ var kimchi = {
     },
 
     getGuestInterfaces: function(name, suc, err) {
-        var url = 'vms/'+encodeURIComponent(name)+'/ifaces';
+        var url = 'plugins/kimchi/vms/' + encodeURIComponent(name) + '/ifaces';
         wok.requestJSON({
             url : url,
             type : 'GET',
@@ -1083,7 +1082,7 @@ var kimchi = {
 
     createGuestInterface : function(name, interface, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(name)+'/ifaces',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(name) + '/ifaces',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -1097,7 +1096,7 @@ var kimchi = {
 
     deleteGuestInterface : function(vm, mac, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+'/ifaces/'+encodeURIComponent(mac),
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/ifaces/' + encodeURIComponent(mac),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -1110,7 +1109,7 @@ var kimchi = {
 
     updateGuestInterface : function(vm, mac, interface, suc, err) {
         $.ajax({
-            url : 'vms/'+encodeURIComponent(vm)+'/ifaces/'+encodeURIComponent(mac),
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/ifaces/' + encodeURIComponent(mac),
             type : 'PUT',
             contentType : 'application/json',
             data : JSON.stringify(interface),
@@ -1124,7 +1123,7 @@ var kimchi = {
 
     getUserById : function(data, suc, err) {
         wok.requestJSON({
-            url : 'users?_user_id=' + data.user_id,
+            url : 'plugins/kimchi/users?_user_id=' + data.user_id,
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1139,7 +1138,7 @@ var kimchi = {
 
     getUsers : function(suc, err) {
         wok.requestJSON({
-            url : 'users',
+            url : 'plugins/kimchi/users',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1153,7 +1152,7 @@ var kimchi = {
 
     getGroups : function(suc, err) {
         wok.requestJSON({
-            url : 'groups',
+            url : 'plugins/kimchi/groups',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1167,7 +1166,7 @@ var kimchi = {
 
     getHostPCIDevices : function(suc, err) {
         wok.requestJSON({
-            url : 'host/devices?_passthrough=true&_cap=pci',
+            url : 'plugins/kimchi/host/devices?_passthrough=true&_cap=pci',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1181,7 +1180,7 @@ var kimchi = {
 
     getPCIDeviceCompanions : function(pcidev, suc, err) {
         wok.requestJSON({
-            url : 'host/devices?_passthrough_affected_by=' + pcidev,
+            url : 'plugins/kimchi/host/devices?_passthrough_affected_by=' + pcidev,
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1197,7 +1196,7 @@ var kimchi = {
         server = encodeURIComponent(server);
         port = port ? '&_server_port='+encodeURIComponent(port) : '';
         wok.requestJSON({
-            url : 'storageservers/'+server+'/storagetargets?_target_type=iscsi'+port,
+            url : 'plugins/kimchi/storageservers/' + server + '/storagetargets?_target_type=iscsi' + port,
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1211,7 +1210,7 @@ var kimchi = {
 
     getPeers : function(suc, err) {
         wok.requestJSON({
-            url : 'peers',
+            url : 'plugins/kimchi/peers',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1225,7 +1224,7 @@ var kimchi = {
 
     getVMPCIDevices : function(id, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(id)+'/hostdevs',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(id) + '/hostdevs',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1239,7 +1238,7 @@ var kimchi = {
 
     addVMPCIDevice : function(vm, device, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+ encodeURIComponent(vm) +'/hostdevs',
+            url : 'plugins/kimchi/vms/'+ encodeURIComponent(vm) +'/hostdevs',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -1253,7 +1252,7 @@ var kimchi = {
 
     removeVMPCIDevice : function(vm, device, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+ encodeURIComponent(vm) +'/hostdevs/' + encodeURIComponent(device),
+            url : 'plugins/kimchi/vms/'+ encodeURIComponent(vm) +'/hostdevs/' + encodeURIComponent(device),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -1269,7 +1268,7 @@ var kimchi = {
      */
     createVolumeWithCapacity: function(poolName, settings, suc, err) {
         wok.requestJSON({
-            url : 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes',
+            url : 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName) + '/storagevolumes',
             type : 'POST',
             contentType : "application/json",
             data : JSON.stringify(settings),
@@ -1283,7 +1282,7 @@ var kimchi = {
      * Upload volume content
      */
     uploadVolumeToSP: function(poolName, volumeName, settings, suc, err) {
-        var url = 'storagepools/' + encodeURIComponent(poolName) + '/storagevolumes/' + encodeURIComponent(volumeName);
+        var url = 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName) + '/storagevolumes/' + encodeURIComponent(volumeName);
         var fd = settings['formData'];
         wok.requestJSON({
             url : url,
@@ -1304,7 +1303,7 @@ var kimchi = {
         var sp = encodeURIComponent(settings['sp']);
         delete settings['sp'];
         wok.requestJSON({
-            url : 'storagepools/' + sp + '/storagevolumes',
+            url : 'plugins/kimchi/storagepools/' + sp + '/storagevolumes',
             type : 'POST',
             data : JSON.stringify(settings),
             contentType : 'application/json',
@@ -1316,7 +1315,7 @@ var kimchi = {
 
     cloneGuest: function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+"/clone",
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + "/clone",
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -1329,7 +1328,7 @@ var kimchi = {
 
     listSnapshots : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+'/snapshots',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/snapshots',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1343,7 +1342,7 @@ var kimchi = {
 
     getCurrentSnapshot : function(vm, suc, err, sync) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+'/snapshots/current',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/snapshots/current',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
@@ -1358,7 +1357,7 @@ var kimchi = {
 
     revertSnapshot : function(vm, snapshot, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+'/snapshots/'+encodeURIComponent(snapshot)+'/revert',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/snapshots/' + encodeURIComponent(snapshot) + '/revert',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -1371,7 +1370,7 @@ var kimchi = {
 
     createSnapshot : function(vm, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+'/snapshots',
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/snapshots',
             type : 'POST',
             contentType : 'application/json',
             dataType : 'json',
@@ -1384,7 +1383,7 @@ var kimchi = {
 
     deleteSnapshot : function(vm, snapshot, suc, err) {
         wok.requestJSON({
-            url : 'vms/'+encodeURIComponent(vm)+'/snapshots/'+encodeURIComponent(snapshot),
+            url : 'plugins/kimchi/vms/' + encodeURIComponent(vm) + '/snapshots/' + encodeURIComponent(snapshot),
             type : 'DELETE',
             contentType : 'application/json',
             dataType : 'json',
@@ -1397,7 +1396,7 @@ var kimchi = {
 
     getCPUInfo : function(suc, err) {
         wok.requestJSON({
-            url : 'host/cpuinfo',
+            url : 'plugins/kimchi/host/cpuinfo',
             type : 'GET',
             contentType : 'application/json',
             dataType : 'json',
diff --git a/plugins/kimchi/ui/js/src/kimchi.guest_add_main.js b/plugins/kimchi/ui/js/src/kimchi.guest_add_main.js
index 1008d85..6be6f9a 100644
--- a/plugins/kimchi/ui/js/src/kimchi.guest_add_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.guest_add_main.js
@@ -34,7 +34,7 @@ kimchi.guest_add_main = function() {
             $('#btn-create-template').on('click', function(event) {
                 wok.topic('templateCreated').subscribe(showTemplates);
 
-                wok.window.open('template-add.html');
+                wok.window.open('plugins/kimchi/template-add.html');
 
                 event.preventDefault();
             });
diff --git a/plugins/kimchi/ui/js/src/kimchi.guest_edit_main.js b/plugins/kimchi/ui/js/src/kimchi.guest_edit_main.js
index 28c2163..25e3703 100644
--- a/plugins/kimchi/ui/js/src/kimchi.guest_edit_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.guest_edit_main.js
@@ -604,7 +604,7 @@ kimchi.guest_edit_main = function() {
                 });
         };
         var listGeneratingSnapshots = function(){
-            kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/snapshots/*'), function(tasks) {
+            kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/plugins/kimchi/snapshots/*'), function(tasks) {
                 $(".task", "#form-guest-edit-snapshot").empty();
                 for(var i=0;i<tasks.length;i++){
                     addOngoingItem(tasks[i]);
@@ -639,7 +639,7 @@ kimchi.guest_edit_main = function() {
     };
 
     var initContent = function(guest) {
-        guest['icon'] = guest['icon'] || 'images/icon-vm.png';
+        guest['icon'] = guest['icon'] || 'plugins/kimchi/images/icon-vm.png';
         $('#form-guest-edit-general').fillWithObject(guest);
         kimchi.thisVMState = guest['state'];
         refreshCDROMs();
@@ -650,7 +650,7 @@ kimchi.guest_edit_main = function() {
                 text: false
             }).click(function(event) {
                 event.preventDefault();
-                wok.window.open("guest-storage-add.html");
+                wok.window.open("plugins/kimchi/guest-storage-add.html");
             });
         if(kimchi.thisVMState === "running") {
             $("#form-guest-edit-general input").prop("disabled", true);
diff --git a/plugins/kimchi/ui/js/src/kimchi.guest_main.js b/plugins/kimchi/ui/js/src/kimchi.guest_main.js
index a0f927b..7dd5d84 100644
--- a/plugins/kimchi/ui/js/src/kimchi.guest_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.guest_main.js
@@ -202,7 +202,7 @@ kimchi.vmedit = function(event) {
     var vm_id=vm.attr("id");
     kimchi.selectedGuest = vm_id;
     wok.window.open({
-        url: 'guest-edit.html',
+        url: 'plugins/kimchi/guest-edit.html',
         close: function() {
             kimchi.clearGuestEdit();
         }
@@ -245,7 +245,7 @@ kimchi.listVmsAuto = function() {
     }
     var getCreatingGuests = function(){
         var guests = [];
-        kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/vms/[^/]+$'), function(tasks) {
+        kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/plugins/kimchi/vms/[^/]+$'), function(tasks) {
             for(var i=0;i<tasks.length;i++){
                 var guestUri = tasks[i].target_uri;
                 var guestName = guestUri.split('/')[2]
@@ -260,7 +260,7 @@ kimchi.listVmsAuto = function() {
     };
     var getCloningGuests = function(){
         var guests = [];
-        kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/vms/.+/clone'), function(tasks) {
+        kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/plugins/kimchi/vms/.+/clone'), function(tasks) {
             for(var i=0;i<tasks.length;i++){
                 var guestUri = tasks[i].target_uri;
                 var guestName = guestUri.split('/')[2]
@@ -325,7 +325,7 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
     if (vmObject.screenshot) {
         curImg = vmObject.screenshot.replace(/^\//,'');
     }
-    var load_src = curImg || 'images/icon-vm.png';
+    var load_src = curImg || 'plugins/kimchi/images/icon-vm.png';
     var tile_src = prevScreenImage || vmObject['load-src'];
     var liveTile=result.find('div[name=guest-tile] > .tile');
     liveTile.addClass(vmObject.state);
@@ -352,7 +352,7 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
 	    liveTile.off("click", kimchi.openVmConsole);
             liveTile.on("click", kimchi.vmresume);
 	    if(vmObject.state="paused") {
-	        liveTile.find('.overlay').attr('src',"/images/theme-default/ac24_resume.png");
+	        liveTile.find('.overlay').attr('src',"plugins/kimchi/images/theme-default/ac24_resume.png");
 	        liveTile.find('.overlay').attr('alt',"Resume");
 	    }
             liveTile.hover(function(event){$(this).find('.overlay').show()}, function(event){$(this).find('.overlay').hide()});
@@ -492,7 +492,7 @@ kimchi.guest_main = function() {
     if(wok.tabMode['guests'] === 'admin') {
         $('.tools').attr('style','display');
         $("#vm-add").on("click", function(event) {
-            wok.window.open('guest-add.html');
+            wok.window.open('plugins/kimchi/guest-add.html');
         });
     }
     kimchi.guestTemplate = $('#guest-tmpl').html();
diff --git a/plugins/kimchi/ui/js/src/kimchi.guest_media_main.js b/plugins/kimchi/ui/js/src/kimchi.guest_media_main.js
index 2e4e7e8..b920527 100644
--- a/plugins/kimchi/ui/js/src/kimchi.guest_media_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.guest_media_main.js
@@ -35,7 +35,7 @@ kimchi.guest_media_main = function() {
             var replaceCDROM = function(event) {
                 event.preventDefault();
                 kimchi.selectedGuestStorage = $(this).data('dev');
-                wok.window.open("guest-cdrom-edit.html");
+                wok.window.open("plugins/kimchi/guest-cdrom-edit.html");
             };
 
             $('input[type="text"][name="cdrom"]', container).on('click', replaceCDROM);
diff --git a/plugins/kimchi/ui/js/src/kimchi.host.js b/plugins/kimchi/ui/js/src/kimchi.host.js
index 5b15ad0..afca992 100644
--- a/plugins/kimchi/ui/js/src/kimchi.host.js
+++ b/plugins/kimchi/ui/js/src/kimchi.host.js
@@ -86,7 +86,8 @@ kimchi.host_main = function() {
                 id: 'repositories-grid-add-button',
                 label: i18n['KCHREPO6012M'],
                 onClick: function(event) {
-                    wok.window.open({url:'repository-add.html', class: repo_type});
+                    wok.window.open({url:'plugins/kimchi/repository-add.html',
+                                    class: repo_type});
                 }
             }, {
                 id: 'repositories-grid-enable-button',
@@ -114,7 +115,8 @@ kimchi.host_main = function() {
                         return;
                     }
                     kimchi.selectedRepository = repository['repo_id'];
-                    wok.window.open({url:'repository-edit.html', class: repo_type});
+                    wok.window.open({url:'plugins/kimchi/repository-edit.html',
+                                    class: repo_type});
                 }
             }, {
                 id: 'repositories-grid-remove-button',
@@ -302,7 +304,7 @@ kimchi.host_main = function() {
                 id: reportGridID + '-generate-button',
                 label: i18n['KCHDR6006M'],
                 onClick: function(event) {
-                    wok.window.open('report-add.html');
+                    wok.window.open('plugins/kimchi/report-add.html');
                 }
             }, {
                 id: reportGridID + '-rename-button',
@@ -315,7 +317,7 @@ kimchi.host_main = function() {
                     }
 
                     kimchi.selectedReport = report['name'];
-                    wok.window.open('report-rename.html');
+                    wok.window.open('plugins/kimchi/report-rename.html');
                 }
             }, {
                 id: reportGridID + '-remove-button',
@@ -389,11 +391,11 @@ kimchi.host_main = function() {
 
     var getPendingReports = function() {
         var reports = []
-        var filter = 'status=running&target_uri=' + encodeURIComponent('^/debugreports/*')
+        var filter = 'status=running&target_uri=' + encodeURIComponent('^/plugins/kimchi/debugreports/*')
 
         kimchi.getTasksByFilter(filter, function(tasks) {
             for(var i = 0; i < tasks.length; i++) {
-                reportName = tasks[i].target_uri.replace(/^\/debugreports\//, '') || i18n['KCHDR6012M'];
+                reportName = tasks[i].target_uri.replace(/^\/plugins\/kimchi\/debugreports\//, '') || i18n['KCHDR6012M'];
                 reports.push({'name': reportName, 'time': i18n['KCHDR6007M']})
 
                 if(kimchi.trackingTasks.indexOf(tasks[i].id) >= 0) {
diff --git a/plugins/kimchi/ui/js/src/kimchi.storage_main.js b/plugins/kimchi/ui/js/src/kimchi.storage_main.js
index 6019cea..40a43f6 100644
--- a/plugins/kimchi/ui/js/src/kimchi.storage_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.storage_main.js
@@ -156,7 +156,7 @@ kimchi.storageBindClick = function() {
         $('.pool-add-volume').on('click', function(event) {
             var poolName = $(this).data('name');
             kimchi.selectedSP = poolName;
-            wok.window.open('storagepool-add-volume.html');
+            wok.window.open('plugins/kimchi/storagepool-add-volume.html');
         });
 
         $('.storage-action').on('click', function() {
@@ -211,7 +211,7 @@ kimchi.doListVolumes = function(poolObj) {
 
     var getOngoingVolumes = function() {
         var result = {}
-        var filter = 'status=running&target_uri=' + encodeURIComponent('^/storagepools/' + poolName + '/*')
+        var filter = 'status=running&target_uri=' + encodeURIComponent('^/plugins/kimchi/storagepools/' + poolName + '/*')
         kimchi.getTasksByFilter(filter, function(tasks) {
             for(var i = 0; i < tasks.length; i++) {
                 var volumeName = tasks[i].target_uri.split('/').pop();
@@ -338,7 +338,7 @@ kimchi.storage_main = function() {
     if(wok.tabMode['storage'] === 'admin') {
         $('.tools').attr('style','display');
         $('#storage-pool-add').on('click', function() {
-            wok.window.open('storagepool-add.html');
+            wok.window.open('plugins/kimchi/storagepool-add.html');
         });
         $('.list-title .title-actions').attr('style','display');
     }
diff --git a/plugins/kimchi/ui/js/src/kimchi.template_edit_main.js b/plugins/kimchi/ui/js/src/kimchi.template_edit_main.js
index 885fe54..87bba3d 100644
--- a/plugins/kimchi/ui/js/src/kimchi.template_edit_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.template_edit_main.js
@@ -283,7 +283,7 @@ kimchi.template_edit_main = function() {
         if($('.template-storage-type', tmpItem).val() === 'iscsi' || $('.template-storage-type', tmpItem).val() == 'scsi') {
             tempNameTail = tempName[tempName.length-1];
         }
-        tempName = '/storagepools/' + tempNameHead;
+        tempName = '/plugins/kimchi/storagepools/' + tempNameHead;
         data['storagepool'] = tempName;
         $.each(editableFields, function(i, field) {
             /* Support only 1 disk at this moment */
diff --git a/plugins/kimchi/ui/js/src/kimchi.template_main.js b/plugins/kimchi/ui/js/src/kimchi.template_main.js
index 5d474bd..b09fe12 100644
--- a/plugins/kimchi/ui/js/src/kimchi.template_main.js
+++ b/plugins/kimchi/ui/js/src/kimchi.template_main.js
@@ -34,9 +34,9 @@ kimchi.doListTemplates = function() {
                     }
                 }
                 if(isLocal){
-                    value.location = "images/theme-default/icon-local.png";
+                    value.location = "plugins/kimchi/images/theme-default/icon-local.png";
                 }else{
-                    value.location = "images/theme-default/icon-remote.png";
+                    value.location = "plugins/kimchi/images/theme-default/icon-remote.png";
                 }
                 listHtml += wok.substitute(templateHtml, value);
             });
@@ -57,7 +57,7 @@ kimchi.templateBindClick = function() {
     $('.template-edit').on('click', function(event) {
         var templateName = $(this).data('template');
         kimchi.selectedTemplate = templateName;
-        wok.window.open("template-edit.html");
+        wok.window.open("plugins/kimchi/template-edit.html");
     });
     $('.template-clone').on('click', function(event) {
         kimchi.selectedTemplate = $(this).data('template');
@@ -97,7 +97,7 @@ kimchi.template_main = function() {
         $('.tools').attr('style','display');
         $("#template-add").on("click", function(event) {
             wok.window.open({
-                url: 'template-add.html',
+                url: 'plugins/kimchi/template-add.html',
                 close: function() {
                     if (kimchi.deepScanHandler) {
                         kimchi.deepScanHandler.stop = true;
diff --git a/plugins/kimchi/ui/pages/guest-add.html.tmpl b/plugins/kimchi/ui/pages/guest-add.html.tmpl
index 2668391..3770d96 100644
--- a/plugins/kimchi/ui/pages/guest-add.html.tmpl
+++ b/plugins/kimchi/ui/pages/guest-add.html.tmpl
@@ -61,7 +61,7 @@
                 <script type="html/text" id="tmpl-template" class="tmpl-html">
                     <li>
                         <label>
-                            <input type="radio" name="template" value="/templates/{name}">
+                            <input type="radio" name="template" value="/plugins/kimchi/templates/{name}">
                             <div class="info">
                                 <div class="summary os-icon">
                                     <img src="{icon}">
diff --git a/plugins/kimchi/ui/pages/guest.html.tmpl b/plugins/kimchi/ui/pages/guest.html.tmpl
index a876f38..78e9161 100644
--- a/plugins/kimchi/ui/pages/guest.html.tmpl
+++ b/plugins/kimchi/ui/pages/guest.html.tmpl
@@ -45,7 +45,7 @@
                 <div class="tile ">
                     <img class="imgactive" alt="" src="">
                     <img class="imgload" alt="" src="">
-                    <img class="overlay shutoff-hidden" alt="$_("Start")" src="images/theme-default/icon-power-down.png" >
+                    <img class="overlay shutoff-hidden" alt="$_("Start")" src="plugins/kimchi/images/theme-default/icon-power-down.png" >
                 </div>
             </div>
            <div class="sortable guest-actions" name="guest-actions">
diff --git a/plugins/kimchi/ui/pages/storagepool-add.html.tmpl b/plugins/kimchi/ui/pages/storagepool-add.html.tmpl
index fc2ca2a..a697af5 100644
--- a/plugins/kimchi/ui/pages/storagepool-add.html.tmpl
+++ b/plugins/kimchi/ui/pages/storagepool-add.html.tmpl
@@ -105,7 +105,7 @@
                             <div class="icon-info-circled light-grey c1 help-inline"></div>
                             <p class="text-help help-inline">
                                 $_("Looking for available partitions ...")
-                                <img src = "images/theme-default/loading.gif" />
+                                <img src = "plugins/kimchi/images/theme-default/loading.gif" />
                             </p>
                         </div>
                     </section>
diff --git a/plugins/kimchi/ui/pages/tabs/storage.html.tmpl b/plugins/kimchi/ui/pages/tabs/storage.html.tmpl
index 13ebbe9..2f89d22 100644
--- a/plugins/kimchi/ui/pages/tabs/storage.html.tmpl
+++ b/plugins/kimchi/ui/pages/tabs/storage.html.tmpl
@@ -45,7 +45,7 @@
 </div>
 <div id="logicalPoolExtend" title="$_("Device path")">
      <p id="loading-info" class="text-help">
-         <img src = "images/theme-default/loading.gif" />
+         <img src = "plugins/kimchi/images/theme-default/loading.gif" />
          $_("Looking for available partitions ...")
      </p>
      <div class="host-partition">
diff --git a/plugins/kimchi/ui/pages/template-add.html.tmpl b/plugins/kimchi/ui/pages/template-add.html.tmpl
index d0292a0..b44db79 100644
--- a/plugins/kimchi/ui/pages/template-add.html.tmpl
+++ b/plugins/kimchi/ui/pages/template-add.html.tmpl
@@ -146,7 +146,7 @@
                 <div id="load-remote-iso">
                     <h3 class="step-subtitle">
                         <label>
-                            <img src = "images/theme-default/loading.gif" />
+                            <img src = "plugins/kimchi/images/theme-default/loading.gif" />
                             $_("Loading default remote ISOs ...")
                         </label>
                     </h3>
diff --git a/plugins/sample/ui/js/util.js b/plugins/sample/ui/js/util.js
index 1e6c4df..7689a81 100644
--- a/plugins/sample/ui/js/util.js
+++ b/plugins/sample/ui/js/util.js
@@ -20,7 +20,7 @@ sample = {};
 
 sample.description = function(suc, err){
     wok.requestJSON({
-        url : kimchi.url + 'plugins/sample/description',
+        url : 'plugins/sample/description',
         type : 'GET',
         contentType : 'application/json',
         dataType : 'json',
diff --git a/ui/pages/error.html.tmpl b/ui/pages/error.html.tmpl
index dfe7ce3..eea1179 100644
--- a/ui/pages/error.html.tmpl
+++ b/ui/pages/error.html.tmpl
@@ -28,14 +28,14 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <title>Wok</title>
-    <link rel="stylesheet" href="$href("/css/theme-default.min.css")">
+    <link rel="stylesheet" href="$href("css/theme-default.min.css")">
 </head>
 
 
 <body>
     <div class="error-background">
         <h1 id="logo">
-            <img src="/images/theme-default/logo-white.png" alt="Wok">
+            <img src="images/theme-default/logo-white.png" alt="Wok">
         </h1>
     </div>
     <div class="error-msg error-icon">
-- 
1.7.1




More information about the Kimchi-devel mailing list