[pkg-eucalyptus-commits] [SCM] managing cloud instances for Eucalyptus branch, master, updated. 3.0.0-alpha3-257-g1da8e3a
Garrett Holmstrom
gholms at fedoraproject.org
Sun Jun 16 02:30:50 UTC 2013
The following commit has been merged in the master branch:
commit bd0c372dee39c0c9481c38910032d9121f1e249f
Author: Garrett Holmstrom <gholms at fedoraproject.org>
Date: Sun Mar 31 13:06:39 2013 -0700
Implement CreateLoadBalancerPolicy
Fixes TOOLS-241
diff --git a/bin/euelb-create-lb b/bin/euelb-create-lb-policy
similarity index 51%
copy from bin/euelb-create-lb
copy to bin/euelb-create-lb-policy
index 02b060f..0a189d8 100755
--- a/bin/euelb-create-lb
+++ b/bin/euelb-create-lb-policy
@@ -1,6 +1,6 @@
#!/usr/bin/python -tt
-import euca2ools.commands.elasticloadbalancing.createloadbalancer
+import euca2ools.commands.elasticloadbalancing.createloadbalancerpolicy
if __name__ == '__main__':
- euca2ools.commands.elasticloadbalancing.createloadbalancer.CreateLoadBalancer.run()
+ euca2ools.commands.elasticloadbalancing.createloadbalancerpolicy.CreateLoadBalancerPolicy.run()
diff --git a/euca2ools/commands/elasticloadbalancing/createloadbalancerpolicy.py b/euca2ools/commands/elasticloadbalancing/createloadbalancerpolicy.py
new file mode 100644
index 0000000..4ffbd5c
--- /dev/null
+++ b/euca2ools/commands/elasticloadbalancing/createloadbalancerpolicy.py
@@ -0,0 +1,72 @@
+# Software License Agreement (BSD License)
+#
+# Copyright (c) 2013, Eucalyptus Systems, Inc.
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with or
+# without modification, are permitted provided that the following conditions
+# are met:
+#
+# Redistributions of source code must retain the above
+# copyright notice, this list of conditions and the
+# following disclaimer.
+#
+# Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the
+# following disclaimer in the documentation and/or other
+# materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+import argparse
+from euca2ools.commands.elasticloadbalancing import ELBRequest
+from requestbuilder import Arg
+
+
+def attribute(attr_as_str):
+ attr = {}
+ for pair in attr_as_str.split(','):
+ key, __, val = pair.partition('=')
+ if key.strip() == 'name':
+ attr['AttributeName'] = val.strip()
+ elif key.strip() == 'value':
+ attr['AttributeValue'] = val.strip()
+ else:
+ raise argparse.ArgumentTypeError(
+ "attribute '{0}': '{1}' is not a valid part of an attribute "
+ "(choose from " "'name', 'value')".format(attr_as_str,
+ key.strip()))
+ if 'AttributeName' not in attr:
+ raise argparse.ArgumentTypeError(
+ "attribute '{0}': name is required".format(attr_as_str))
+ if 'AttributeValue' not in attr:
+ raise argparse.ArgumentTypeError(
+ "attribute '{0}': value is required".format(attr_as_str))
+ return attr
+
+
+class CreateLoadBalancerPolicy(ELBRequest):
+ DESCRIPTION = 'Add a new policy to a load balancer'
+ ARGS = [Arg('LoadBalancerName', metavar='ELB',
+ help='name of the load balancer to modify (required)'),
+ Arg('--policy-name', dest='PolicyName', metavar='POLICY',
+ required=True, help='name of the new policy (required)'),
+ Arg('--policy-type', dest='PolicyTypeName', metavar='POLTYPE',
+ required=True,
+ help='''type of the new policy. For a list of policy types,
+ use euelb-describe-lb-policy-types. (required)'''),
+ Arg('-a', '--attribute', dest='PolicyAttributes.member',
+ action='append', metavar='"name=NAME, value=VALUE"',
+ type=attribute, help='''name and value for each attribute
+ associated with the new policy. Use this option multiple times
+ to supply multiple attributes.''')]
--
managing cloud instances for Eucalyptus
More information about the pkg-eucalyptus-commits
mailing list