update scenario name 63/39963/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 23 Aug 2017 07:54:45 +0000 (15:54 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Fri, 25 Aug 2017 05:55:38 +0000 (13:55 +0800)
url PUT /api/v1/scenarios/<scenario_name>
if new_name already exist, return Forbidden
if new_name == name, return Forbidden

Change-Id: If3b82b3df4a763d60dad110caca2659c5f39ab50
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/test/testapi/opnfv_testapi/resources/scenario_handlers.py
utils/test/testapi/opnfv_testapi/resources/scenario_models.py
utils/test/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py

index 6cdf99e..e9c19a7 100644 (file)
@@ -114,8 +114,21 @@ class ScenarioGURHandler(GenericScenarioHandler):
         self._get_one(query={'name': name})
         pass
 
+    @swagger.operation(nickname="updateScenarioName")
     def put(self, name):
-        pass
+        """
+            @description: update scenario, only rename is supported currently
+            @param body: fields to be updated
+            @type body: L{ScenarioUpdateRequest}
+            @in body: body
+            @rtype: L{Scenario}
+            @return 200: update success
+            @raise 404: scenario not exist
+            @raise 403: nothing to update
+        """
+        query = {'name': name}
+        db_keys = ['name']
+        self._update(query=query, db_keys=db_keys)
 
     @swagger.operation(nickname="deleteScenarioByName")
     def delete(self, name):
index c6da76b..d950ed1 100644 (file)
@@ -166,6 +166,12 @@ class ScenarioChangeOwnerRequest(models.ModelBase):
         self.owner = owner
 
 
+@swagger.model()
+class ScenarioUpdateRequest(models.ModelBase):
+    def __init__(self, name=None):
+        self.name = name
+
+
 @swagger.model()
 class Scenario(models.ModelBase):
     """
index 4f0fad4..1367fc6 100644 (file)
@@ -179,6 +179,8 @@ class TestScenarioUpdate(TestScenarioBase):
                 elif item in ['versions']:
                     locator = 'installer={}'.format(
                         self.installer)
+                elif item in ['rename']:
+                    self.update_url = self.scenario_url
 
                 if locator:
                     self.update_url = '{}?{}'.format(self.update_url, locator)
@@ -409,6 +411,21 @@ class TestScenarioUpdate(TestScenarioBase):
             installers)
         return deletes
 
+    @update_url_fixture('rename')
+    @update_partial('_update', '_success')
+    def test_renameScenario(self):
+        new_name = 'new_scenario_name'
+        update = models.ScenarioUpdateRequest(name=new_name)
+        self.req_d['name'] = new_name
+        return update
+
+    @update_url_fixture('rename')
+    @update_partial('_update', '_forbidden')
+    def test_renameScenario_exist(self):
+        new_name = self.req_d['name']
+        update = models.ScenarioUpdateRequest(name=new_name)
+        return update
+
     def _add(self, update_req):
         return self.post_direct_url(self.update_url, update_req)