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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user