Changes around security groups api

1. Added list-security-group and
 add-security-group methods to server client
2. Refactored security group request classes.
3. Added delete-security-group-rule method to
security group rule client

Change-Id: Ie0c4e6525b6f4066a8e31b4f1028e5baa94118b4
This commit is contained in:
Sumanth Nagadavalli
2013-06-25 11:20:42 +05:30
parent 380909a351
commit 7088d24d08
5 changed files with 111 additions and 42 deletions

View File

@@ -20,10 +20,13 @@ from cafe.engine.clients.rest import AutoMarshallingRestClient
from cloudcafe.compute.common.datagen import rand_name
from cloudcafe.compute.common.models.metadata import Metadata
from cloudcafe.compute.common.models.metadata import MetadataItem
from cloudcafe.compute.extensions.security_groups_api.models.security_group\
import SecurityGroups, SecurityGroup
from cloudcafe.compute.servers_api.models.servers import Server
from cloudcafe.compute.servers_api.models.servers import Addresses
from cloudcafe.compute.servers_api.models.servers import InstanceActions
from cloudcafe.compute.servers_api.models.requests import CreateServer
from cloudcafe.compute.servers_api.models.requests import CreateServer,\
AddSecurityGroup
from cloudcafe.compute.servers_api.models.requests import UpdateServer
from cloudcafe.compute.servers_api.models.requests import ChangePassword, \
ConfirmResize, RevertResize, Resize, Reboot, MigrateServer, Lock, \
@@ -759,3 +762,35 @@ class ServersClient(AutoMarshallingRestClient):
resp = self.request('GET', url, response_entity_type=InstanceActions,
requestslib_kwargs=requestslib_kwargs)
return resp
def list_security_groups(self, server_id, requestslib_kwargs=None):
"""
@summary: Returns a list of security groups of a server
@param server_id: The id of an existing server
@type server_id: String
@return: A list of security groups
@rtype: Requests.response
"""
url = '{base_url}/servers/{server_id}/os-security-groups'.format(
base_url=self.url, server_id=server_id)
resp = self.request('GET', url, response_entity_type=SecurityGroups,
requestslib_kwargs=requestslib_kwargs)
return resp
def add_security_group(self, server_id, group_name,
requestslib_kwargs=None):
"""
@summary: Returns a list of security groups of a server
@param server_id: The id of an existing server
@type server_id: String
@return: A list of security groups
@rtype: Requests.response
"""
url = '{base_url}/servers/{server_id}/action'.format(
base_url=self.url, server_id=server_id)
add_security_group_request_object = AddSecurityGroup(name=group_name)
resp = self.request('POST', url,
request_entity=add_security_group_request_object,
response_entity_type=SecurityGroup,
requestslib_kwargs=requestslib_kwargs)
return resp

View File

@@ -153,9 +153,9 @@ class Reboot(AutoMarshallingModel):
class Personality(AutoMarshallingModel):
'''
"""
@summary: Personality Request Object for Server
'''
"""
ROOT_TAG = 'personality'
def __init__(self, type):
@@ -197,9 +197,9 @@ class Rebuild(CreateServer):
class Resize(AutoMarshallingModel):
'''
"""
@summary: Resize Request Object for Server
'''
"""
ROOT_TAG = 'resize'
def __init__(self, flavorRef, diskConfig=None):
@@ -223,9 +223,9 @@ class Resize(AutoMarshallingModel):
class ResetState(AutoMarshallingModel):
'''
"""
@summary: Reset State Request Object for Server
'''
"""
ROOT_TAG = 'os-resetState'
def __init__(self, state):
@@ -245,9 +245,9 @@ class ResetState(AutoMarshallingModel):
class ConfirmResize(AutoMarshallingModel):
'''
"""
@summary: Confirm Resize Request Object for Server
'''
"""
ROOT_TAG = 'confirmResize'
def _obj_to_json(self):
@@ -265,10 +265,10 @@ class ConfirmResize(AutoMarshallingModel):
class RevertResize(AutoMarshallingModel):
'''
"""
@summary: Revert Resize Request Object for Server
'''
"""
ROOT_TAG = 'revertResize'
def _obj_to_json(self):
@@ -286,9 +286,9 @@ class RevertResize(AutoMarshallingModel):
class MigrateServer(AutoMarshallingModel):
'''
"""
@summary: Migrate Server Request Object
'''
"""
ROOT_TAG = 'migrate'
def _obj_to_json(self):
@@ -305,9 +305,9 @@ class MigrateServer(AutoMarshallingModel):
class ConfirmServerMigration(AutoMarshallingModel):
'''
"""
@summary: Confirm Server Migration Request Object
'''
"""
ROOT_TAG = 'confirmResize'
def _obj_to_json(self):
@@ -324,9 +324,9 @@ class ConfirmServerMigration(AutoMarshallingModel):
class Lock(AutoMarshallingModel):
'''
"""
@summary: Lock Server Request Object
'''
"""
ROOT_TAG = 'lock'
def _obj_to_json(self):
@@ -343,9 +343,9 @@ class Lock(AutoMarshallingModel):
class Unlock(AutoMarshallingModel):
'''
"""
@summary: Unlock Server Request Object
'''
"""
ROOT_TAG = 'unlock'
def _obj_to_json(self):
@@ -362,9 +362,9 @@ class Unlock(AutoMarshallingModel):
class Start(AutoMarshallingModel):
'''
"""
@summary: Start Server Request Object
'''
"""
ROOT_TAG = 'os-start'
def _obj_to_json(self):
@@ -381,9 +381,9 @@ class Start(AutoMarshallingModel):
class Stop(AutoMarshallingModel):
'''
"""
@summary: Stop Server Request Object
'''
"""
ROOT_TAG = 'os-stop'
def _obj_to_json(self):
@@ -400,9 +400,9 @@ class Stop(AutoMarshallingModel):
class Suspend(AutoMarshallingModel):
'''
"""
@summary: Suspend Server Request Object
'''
"""
ROOT_TAG = 'suspend'
def _obj_to_json(self):
@@ -419,9 +419,9 @@ class Suspend(AutoMarshallingModel):
class Resume(AutoMarshallingModel):
'''
"""
@summary: Resume Server Request Object
'''
"""
ROOT_TAG = 'resume'
def _obj_to_json(self):
@@ -438,9 +438,9 @@ class Resume(AutoMarshallingModel):
class Pause(AutoMarshallingModel):
'''
"""
@summary: Pause Server Request Object
'''
"""
ROOT_TAG = 'pause'
def _obj_to_json(self):
@@ -457,9 +457,9 @@ class Pause(AutoMarshallingModel):
class Unpause(AutoMarshallingModel):
'''
"""
@summary: Unpause Server Request Object
'''
"""
ROOT_TAG = 'unpause'
def _obj_to_json(self):
@@ -476,9 +476,9 @@ class Unpause(AutoMarshallingModel):
class CreateImage(AutoMarshallingModel):
'''
"""
Create Image Server Action Request Object
'''
"""
ROOT_TAG = 'createImage'
def __init__(self, name, metadata=None):
@@ -560,9 +560,9 @@ class ChangePassword(AutoMarshallingModel):
class AddFixedIP(AutoMarshallingModel):
'''
"""
Add Fixed IP Action Request Object
'''
"""
ROOT_TAG = 'addFixedIp'
def __init__(self, networkId):
@@ -578,9 +578,9 @@ class AddFixedIP(AutoMarshallingModel):
class RemoveFixedIP(AutoMarshallingModel):
'''
"""
Remove Fixed IP Action Request Object
'''
"""
ROOT_TAG = 'removeFixedIp'
def __init__(self, networkId):
@@ -593,3 +593,24 @@ class RemoveFixedIP(AutoMarshallingModel):
def _obj_to_xml(self):
#TODO: Implement when xml is known
raise NotImplementedError
class AddSecurityGroup(AutoMarshallingModel):
"""
Add Security Group Action Request Object
"""
def __init__(self, name):
self.name = name
def _obj_to_json(self):
json_dict = {"name": self.name}
return json.dumps({'addSecurityGroup': json_dict})
def _obj_to_xml(self):
element = ET.Element('addSecurityGroup')
name_ele = ET.Element('name')
name_ele.text = self.name
element.append(name_ele)
xml = ET.tostring(element)
return xml