You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2017/04/12 23:27:43 UTC
[5/7] libcloud git commit: Merge branch 'github-1033' into trunk
Closes #1033
Merge branch 'github-1033' into trunk
Closes #1033
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/c92c66f4
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/c92c66f4
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/c92c66f4
Branch: refs/heads/trunk
Commit: c92c66f4bc9b7279e4ccb2c3a8f02a138bdb2300
Parents: 4938430 010b755
Author: Anthony Shaw <an...@apache.org>
Authored: Thu Apr 13 09:20:55 2017 +1000
Committer: Anthony Shaw <an...@apache.org>
Committed: Thu Apr 13 09:20:55 2017 +1000
----------------------------------------------------------------------
libcloud/compute/drivers/azure_arm.py | 103 +++++++++++++++++++++++++++++
1 file changed, 103 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/c92c66f4/libcloud/compute/drivers/azure_arm.py
----------------------------------------------------------------------
diff --cc libcloud/compute/drivers/azure_arm.py
index 57f55f4,03d8b2f..d6ca90c
--- a/libcloud/compute/drivers/azure_arm.py
+++ b/libcloud/compute/drivers/azure_arm.py
@@@ -71,19 -71,20 +71,33 @@@ class AzureVhdImage(NodeImage)
% (self.id, self.name, self.location))
+class AzureResourceGroup(object):
+ """Represent an Azure resource group."""
+
+ def __init__(self, id, name, location, extra):
+ self.id = id
+ self.name = name
+ self.location = location
+ self.extra = extra
+
+ def __repr__(self):
+ return (('<AzureResourceGroup: id=%s, name=%s, location=%s ...>')
+ % (self.id, self.name, self.location))
+
+ class AzureNetworkSecurityGroup(object):
+ """Represent an Azure network security group."""
+
+ def __init__(self, id, name, location, extra):
+ self.id = id
+ self.name = name
+ self.location = location
+ self.extra = extra
+
+ def __repr__(self):
+ return (
+ ('<AzureNetworkSecurityGroup: id=%s, name=%s, location=%s ...>')
+ % (self.id, self.name, self.location))
+
class AzureNetwork(object):
"""Represent an Azure virtual network."""
@@@ -837,21 -838,95 +851,110 @@@ class AzureNodeDriver(NodeDriver)
params={"api-version": "2015-06-15"})
return [(img["id"], img["name"]) for img in r.object]
+ def ex_list_resource_groups(self):
+ """
+ List resource groups.
+
+ :return: A list of resource groups.
+ :rtype: ``list`` of :class:`.AzureResourceGroup`
+ """
+
+ action = "/subscriptions/%s/resourceGroups/" % (self.subscription_id)
+ r = self.connection.request(action,
+ params={"api-version": "2016-09-01"})
+ return [AzureResourceGroup(grp["id"], grp["name"], grp["location"],
+ grp["properties"])
+ for grp in r.object["value"]]
+
+ def ex_list_network_security_groups(self, resource_group):
+ """
+ List network security groups.
+
+ :param resource_group: List security groups in a specific resource
+ group.
+ :type resource_group: ``str``
+
+ :return: A list of network security groups.
+ :rtype: ``list`` of :class:`.AzureNetworkSecurityGroup`
+ """
+
+ action = "/subscriptions/%s/resourceGroups/%s/providers/" \
+ "Microsoft.Network/networkSecurityGroups" \
+ % (self.subscription_id, resource_group)
+ r = self.connection.request(action,
+ params={"api-version": "2015-06-15"})
+ return [AzureNetworkSecurityGroup(net["id"],
+ net["name"],
+ net["location"],
+ net["properties"])
+ for net in r.object["value"]]
+
+ def ex_create_network_security_group(self, name, resource_group,
+ location=None):
+ """
+ Update tags on any resource supporting tags.
+
+ :param name: Name of the network security group to create
+ :type name: ``str``
+
+ :param resource_group: The resource group to create the network
+ security group in
+ :type resource_group: ``str``
+
+ :param location: The location at which to create the network security
+ group (if None, use default location specified as 'region' in __init__)
+ :type location: :class:`.NodeLocation`
+ """
+
+ if location is None and self.default_location:
+ location = self.default_location
+ else:
+ raise ValueError("location is required.")
+
+ target = "/subscriptions/%s/resourceGroups/%s/" \
+ "providers/Microsoft.Network/networkSecurityGroups/%s" \
+ % (self.subscription_id, resource_group, name)
+ data = {
+ "location": location.id,
+ }
+ self.connection.request(target,
+ params={"api-version": "2016-09-01"},
+ data=data,
+ method='PUT')
+
+ def ex_delete_network_security_group(self, name, resource_group,
+ location=None):
+ """
+ Update tags on any resource supporting tags.
+
+ :param name: Name of the network security group to delete
+ :type name: ``str``
+
+ :param resource_group: The resource group to create the network
+ security group in
+ :type resource_group: ``str``
+
+ :param location: The location at which to create the network security
+ group (if None, use default location specified as 'region' in __init__)
+ :type location: :class:`.NodeLocation`
+ """
+
+ if location is None and self.default_location:
+ location = self.default_location
+ else:
+ raise ValueError("location is required.")
+
+ target = "/subscriptions/%s/resourceGroups/%s/" \
+ "providers/Microsoft.Network/networkSecurityGroups/%s" \
+ % (self.subscription_id, resource_group, name)
+ data = {
+ "location": location.id,
+ }
+ self.connection.request(target,
+ params={"api-version": "2016-09-01"},
+ data=data,
+ method='DELETE')
+
def ex_list_networks(self):
"""
List virtual networks.