Merge "Update contrib docstrings to match guidelines"

This commit is contained in:
Jenkins 2014-04-09 16:53:52 +00:00 committed by Gerrit Code Review
commit fe6ada0439
7 changed files with 67 additions and 64 deletions

View File

@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
"""Client Library for Keystone Resources."""
from keystoneclient.v2_0 import client as kc
from oslo.config import cfg
@ -26,13 +28,14 @@ logger.info(_("Keystone V2 loaded"))
class KeystoneClientV2(object):
"""
Wrap keystone client so we can encapsulate logic used in resources
"""Wrap keystone client so we can encapsulate logic used in resources.
Note this is intended to be initialized from a resource on a per-session
basis, so the session context is passed in on initialization
Also note that a copy of this is created every resource as self.keystone()
via the code in engine/client.py, so there should not be any need to
directly instantiate instances of this class inside resources themselves
directly instantiate instances of this class inside resources themselves.
"""
def __init__(self, context):
# If a trust_id is specified in the context, we immediately

View File

@ -11,6 +11,8 @@
# License for the specific language governing permissions and limitations
# under the License.
"""Client Library for Marconi Resources."""
from heat.engine import clients
from heat.openstack.common import log as logging
@ -24,9 +26,9 @@ except ImportError:
class Clients(clients.OpenStackClients):
'''
Convenience class to create and cache client instances.
'''
"""Convenience class to create and cache client instances."""
def __init__(self, context):
super(Clients, self).__init__(context)
self._marconi = None

View File

@ -70,9 +70,7 @@ class MarconiQueue(resource.Resource):
return self.properties[self.NAME]
def handle_create(self):
'''
Create a marconi message queue.
'''
"""Create a marconi message queue."""
queue_name = self.physical_resource_name()
queue = self.marconi().queue(queue_name, auto_create=False)
# Marconi client doesn't report an error if an queue with the same
@ -85,7 +83,7 @@ class MarconiQueue(resource.Resource):
return queue
def check_create_complete(self, queue):
# set metadata of the newly created queue
"""Set metadata of the newly created queue."""
if queue.exists():
metadata = self.properties.get('metadata')
if metadata:
@ -97,18 +95,14 @@ class MarconiQueue(resource.Resource):
% queue_name)
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
'''
Update queue metadata.
'''
"""Update queue metadata."""
if 'metadata' in prop_diff:
queue = self.marconi().queue(self.resource_id, auto_create=False)
metadata = prop_diff['metadata']
queue.metadata(new_meta=metadata)
def handle_delete(self):
'''
Delete a marconi message queue.
'''
"""Delete a marconi message queue."""
if not self.resource_id:
return

View File

@ -11,6 +11,8 @@
# License for the specific language governing permissions and limitations
# under the License.
"""Client Libraries for Rackspace Resources."""
from oslo.config import cfg
from heat.common import exception
@ -45,9 +47,9 @@ cfg.CONF.register_opts(cloud_opts)
class Clients(clients.OpenStackClients):
'''
Convenience class to create and cache client instances.
'''
"""Convenience class to create and cache client instances."""
def __init__(self, context):
super(Clients, self).__init__(context)
self.pyrax = None
@ -62,32 +64,34 @@ class Clients(clients.OpenStackClients):
return self._get_client("autoscale")
def cloud_db(self):
'''Rackspace cloud database client.'''
"""Rackspace cloud database client."""
return self._get_client("database")
def cloud_lb(self):
'''Rackspace cloud loadbalancer client.'''
"""Rackspace cloud loadbalancer client."""
return self._get_client("load_balancer")
def cloud_dns(self):
'''Rackspace cloud dns client.'''
"""Rackspace cloud dns client."""
return self._get_client("dns")
def nova(self, service_type="compute"):
'''Rackspace cloudservers client. Specifying the service type is to
"""Rackspace cloudservers client.
Specifying the service type is to
maintain compatibility with clients.OpenStackClients. It is not
actually a valid option to change within pyrax.
'''
"""
if service_type is not "compute":
raise ValueError(_("service_type should be compute."))
return self._get_client(service_type)
def cloud_networks(self):
'''Rackspace cloud networks client.'''
"""Rackspace cloud networks client."""
return self._get_client("network")
def trove(self):
'''Rackspace trove client.'''
"""Rackspace trove client."""
if not self._trove:
super(Clients, self).trove(service_type='rax:database')
management_url = self.url_for(service_type='rax:database',

View File

@ -11,9 +11,7 @@
# License for the specific language governing permissions and limitations
# under the License.
"""
Resources for Rackspace Auto Scale.
"""
"""Resources for Rackspace Auto Scale."""
import copy
@ -38,6 +36,7 @@ except ImportError:
class Group(resource.Resource):
"""Represents a scaling group."""
# pyrax differs drastically from the actual Auto Scale API. We'll prefer
@ -302,18 +301,16 @@ class Group(resource.Resource):
return args
def handle_create(self):
"""
Create the autoscaling group and set the resulting group's ID as the
resource_id.
"""Create the autoscaling group and set resource_id.
The resource_id is set to the resulting group's ID.
"""
asclient = self.stack.clients.auto_scale()
group = asclient.create(**self._get_create_args())
self.resource_id_set(str(group.id))
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
"""
Update the group configuration and the launch configuration.
"""
"""Update the group configuration and the launch configuration."""
asclient = self.stack.clients.auto_scale()
if self.GROUP_CONFIGURATION in prop_diff:
args = self._get_group_config_args(
@ -325,8 +322,7 @@ class Group(resource.Resource):
asclient.replace_launch_config(self.resource_id, **args)
def handle_delete(self):
"""
Delete the scaling group.
"""Delete the scaling group.
Since Auto Scale doesn't allow deleting a group until all its servers
are gone, we must set the minEntities and maxEntities of the group to 0
@ -360,6 +356,7 @@ class Group(resource.Resource):
class ScalingPolicy(resource.Resource):
"""Represents a Rackspace Auto Scale scaling policy."""
PROPERTIES = (
@ -444,9 +441,9 @@ class ScalingPolicy(resource.Resource):
return args
def handle_create(self):
"""
Create the scaling policy, and initialize the resource ID to
{group_id}:{policy_id}.
"""Create the scaling policy and initialize the resource ID.
The resource ID is initialized to {group_id}:{policy_id}.
"""
asclient = self.stack.clients.auto_scale()
args = self._get_args(self.properties)
@ -476,11 +473,12 @@ class ScalingPolicy(resource.Resource):
class WebHook(resource.Resource):
"""
Represents a Rackspace AutoScale webhook.
"""Represents a Rackspace AutoScale webhook.
Exposes the URLs of the webhook as attributes.
"""
PROPERTIES = (
POLICY, NAME, METADATA,
) = (

View File

@ -11,6 +11,8 @@
# License for the specific language governing permissions and limitations
# under the License.
"""Resources for Rackspace DNS."""
from heat.common import exception
from heat.engine import constraints
from heat.engine import properties
@ -33,6 +35,8 @@ logger = logging.getLogger(__name__)
class CloudDns(resource.Resource):
"""Represents a DNS resource."""
PROPERTIES = (
NAME, EMAIL_ADDRESS, TTL, COMMENT, RECORDS,
) = (
@ -148,9 +152,7 @@ class CloudDns(resource.Resource):
return self.stack.clients.cloud_dns()
def handle_create(self):
"""
Create a Rackspace CloudDns Instance.
"""
"""Create a Rackspace CloudDns Instance."""
# There is no check_create_complete as the pyrax create for DNS is
# synchronous.
logger.debug(_("CloudDns handle_create called."))
@ -164,9 +166,7 @@ class CloudDns(resource.Resource):
self.resource_id_set(dom.id)
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
"""
Update a Rackspace CloudDns Instance.
"""
"""Update a Rackspace CloudDns Instance."""
logger.debug(_("CloudDns handle_update called."))
if not self.resource_id:
raise exception.Error(_('Update called on a non-existent domain'))
@ -189,9 +189,7 @@ class CloudDns(resource.Resource):
dom.add_records(records)
def handle_delete(self):
"""
Delete a Rackspace CloudDns Instance.
"""
"""Delete a Rackspace CloudDns Instance."""
logger.debug(_("CloudDns handle_delete called."))
if self.resource_id:
try:

View File

@ -10,6 +10,9 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Resources for Rackspace Cloud Loadbalancers."""
try:
from pyrax.exceptions import NotFound
PYRAX_INSTALLED = True
@ -41,6 +44,8 @@ class LoadbalancerBuildError(exception.HeatException):
class CloudLoadBalancer(resource.Resource):
"""Represents a Rackspace Cloud Loadbalancer."""
PROPERTIES = (
NAME, NODES, PROTOCOL, ACCESS_LIST, HALF_CLOSED, ALGORITHM,
CONNECTION_LOGGING, METADATA, PORT, TIMEOUT,
@ -378,7 +383,9 @@ class CloudLoadBalancer(resource.Resource):
return [function()]
def _alter_properties_for_api(self):
"""The following properties have usless key/value pairs which must
"""Set up required, but useless, key/value pairs.
The following properties have useless key/value pairs which must
be passed into the api. Set them up to make template definition easier.
"""
session_persistence = None
@ -405,8 +412,9 @@ class CloudLoadBalancer(resource.Resource):
return False
def _configure_post_creation(self, loadbalancer):
"""Configure all load balancer properties that must be done post
creation.
"""Configure all load balancer properties post creation.
These properties can only be set after the load balancer is created.
"""
if self.properties[self.ACCESS_LIST]:
while not self._check_status(loadbalancer, ['ACTIVE']):
@ -492,9 +500,7 @@ class CloudLoadBalancer(resource.Resource):
return self._check_status(loadbalancer, ['ACTIVE'])
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
"""
Add and remove nodes specified in the prop_diff.
"""
"""Add and remove nodes specified in the prop_diff."""
loadbalancer = self.clb.get(self.resource_id)
if self.NODES in prop_diff:
current_nodes = loadbalancer.nodes
@ -556,18 +562,16 @@ class CloudLoadBalancer(resource.Resource):
self.resource_id_set(None)
def _remove_none(self, property_dict):
'''
Remove values that may be initialized to None and would cause problems
during schema validation.
'''
"""Remove None values that would cause schema validation problems.
These are values that may be initialized to None.
"""
return dict((key, value)
for (key, value) in property_dict.iteritems()
if value)
def validate(self):
"""
Validate any of the provided params
"""
"""Validate any of the provided params."""
res = super(CloudLoadBalancer, self).validate()
if res:
return res