lib/fog/azurerm/requests/network/get_network_security_group.rb
module Fog
module Network
class AzureRM
# Real class for Network Security Group Request
class Real
def get_network_security_group(resource_group_name, security_group_name)
msg = "Getting Network Security Group #{security_group_name} from Resource Group #{resource_group_name}."
Fog::Logger.debug msg
begin
security_group = @network_client.network_security_groups.get(resource_group_name, security_group_name)
rescue MsRestAzure::AzureOperationError => e
raise_azure_exception(e, msg)
end
Fog::Logger.debug "Network Security Group #{security_group_name} retrieved successfully."
security_group
end
end
# Mock class for Network Security Group Request
class Mock
def get_network_security_group(resource_group_name, security_group_name)
network_security_group = {
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}",
'name' => security_group_name,
'type' => 'Microsoft.Network/networkSecurityGroups',
'location' => 'westus',
'properties' =>
{
'securityRules' =>
[
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/securityRules/testRule",
'properties' =>
{
'protocol' => 'tcp',
'sourceAddressPrefix' => '0.0.0.0/0',
'destinationAddressPrefix' => '0.0.0.0/0',
'access' => 'Allow',
'direction' => 'Inbound',
'sourcePortRange' => '22',
'destinationPortRange' => '22',
'priority' => 100,
'provisioningState' => 'Succeeded'
},
'name' => 'testRule'
}
],
'defaultSecurityRules' =>
[
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/defaultSecurityRules/AllowVnetInBound",
'properties' =>
{
'protocol' => '*',
'sourceAddressPrefix' => 'VirtualNetwork',
'destinationAddressPrefix' => 'VirtualNetwork',
'access' => 'Allow',
'direction' => 'Inbound',
'description' => 'Allow inbound traffic from all VMs in VNET',
'sourcePortRange' => '*',
'destinationPortRange' => '*',
'priority' => 65_000,
'provisioningState' => 'Succeeded'
},
'name' => 'AllowVnetInBound'
},
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/defaultSecurityRules/AllowAzureLoadBalancerInBound",
'properties' =>
{
'protocol' => '*',
'sourceAddressPrefix' => 'AzureLoadBalancer',
'destinationAddressPrefix' => '*',
'access' => 'Allow',
'direction' => 'Inbound',
'description' => 'Allow inbound traffic from azure load balancer',
'sourcePortRange' => '*',
'destinationPortRange' => '*',
'priority' => 65_001,
'provisioningState' => 'Succeeded'
},
'name' => 'AllowAzureLoadBalancerInBound'
},
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/defaultSecurityRules/DenyAllInBound",
'properties' =>
{
'protocol' => '*',
'sourceAddressPrefix' => '*',
'destinationAddressPrefix' => '*',
'access' => 'Deny',
'direction' => 'Inbound',
'description' => 'Deny all inbound traffic',
'sourcePortRange' => '*',
'destinationPortRange' => '*',
'priority' => 65_500,
'provisioningState' => 'Succeeded'
},
'name' => 'DenyAllInBound'
},
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/defaultSecurityRules/AllowVnetOutBound",
'properties' =>
{
'protocol' => '*',
'sourceAddressPrefix' => 'VirtualNetwork',
'destinationAddressPrefix' => 'VirtualNetwork',
'access' => 'Allow',
'direction' => 'Outbound',
'description' => 'Allow outbound traffic from all VMs to all VMs in VNET',
'sourcePortRange' => '*',
'destinationPortRange' => '*',
'priority' => 65_000,
'provisioningState' => 'Succeeded'
},
'name' => 'AllowVnetOutBound'
},
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/defaultSecurityRules/AllowInternetOutBound",
'properties' =>
{
'protocol' => '*',
'sourceAddressPrefix' => '*',
'destinationAddressPrefix' => 'Internet',
'access' => 'Allow',
'direction' => 'Outbound',
'description' => 'Allow outbound traffic from all VMs to Internet',
'sourcePortRange' => '*',
'destinationPortRange' => '*',
'priority' => 65_001,
'provisioningState' => 'Succeeded'
},
'name' => 'AllowInternetOutBound'
},
{
'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group_name}/providers/Microsoft.Network/networkSecurityGroups/#{security_group_name}/defaultSecurityRules/DenyAllOutBound",
'properties' =>
{
'protocol' => '*',
'sourceAddressPrefix' => '*',
'destinationAddressPrefix' => '*',
'access' => 'Deny',
'direction' => 'Outbound',
'description' => 'Deny all outbound traffic',
'sourcePortRange' => '*',
'destinationPortRange' => '*',
'priority' => 65_500,
'provisioningState' => 'Succeeded'
},
'name' => 'DenyAllOutBound'
}
],
'resourceGuid' => '9dca97e6-4789-4ebd-86e3-52b8b0da6cd4',
'provisioningState' => 'Succeeded'
}
}
nsg_mapper = Azure::ARM::Network::Models::NetworkSecurityGroup.mapper
@network_client.deserialize(nsg_mapper, network_security_group, 'result.body')
end
end
end
end
end