-
Notifications
You must be signed in to change notification settings - Fork 80
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #601 from inspec/support-azure-synapse-workspaces
RESOURCE-103 Support azure synapse workspaces
- Loading branch information
Showing
11 changed files
with
365 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
103 changes: 103 additions & 0 deletions
103
docs-chef-io/content/inspec/resources/azure_synapse_workspace.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
+++ | ||
title = "azure_synapse_workspace Resource" | ||
platform = "azure" | ||
draft = false | ||
gh_repo = "inspec-azure" | ||
|
||
[menu.inspec] | ||
title = "azure_synapse_workspace" | ||
identifier = "inspec/resources/azure/azure_synapse_workspace Resource" | ||
parent = "inspec/resources/azure" | ||
+++ | ||
|
||
Use the `azure_synapse_workspace` InSpec audit resource to test properties related to an Azure Synapse workspace. | ||
|
||
## Azure REST API Version, Endpoint, and HTTP Client Parameters | ||
|
||
{{% inspec_azure_common_parameters %}} | ||
|
||
## Installation | ||
|
||
{{% inspec_azure_install %}} | ||
|
||
## Syntax | ||
|
||
```ruby | ||
describe azure_synapse_workspace(resource_group: 'RESOURCE_GROUP', name: 'SYNAPSE_WORKSPACE_NAME') do | ||
it { should exist } | ||
its('type') { should eq 'Microsoft.SqlVirtualMachine/sqlVirtualMachineGroups' } | ||
its('location') { should eq 'eastus' } | ||
end | ||
``` | ||
|
||
```ruby | ||
describe azure_synapse_workspace(resource_group: 'RESOURCE_GROUP', name: 'SYNAPSE_WORKSPACE_NAME') do | ||
it { should exist } | ||
end | ||
``` | ||
|
||
## Parameters | ||
|
||
`name` _(required)_ | ||
: Name of the Azure Synapse workspace to test. | ||
|
||
`resource_group` _(required)_ | ||
: Azure resource group that the targeted resource resides in. | ||
|
||
## Properties | ||
|
||
`id` | ||
: Resource Id. | ||
|
||
`name` | ||
: Resource name. | ||
|
||
`type` | ||
: Resource type. `Microsoft.Synapse/workspaces`. | ||
|
||
`location` | ||
: The Geo-location where the resource lives. | ||
|
||
`properties` | ||
: The properties of the Synapse workspaces. | ||
|
||
`properties.provisioningState` | ||
: State of the resource. | ||
|
||
|
||
For properties applicable to all resources, such as `type`, `name`, `id`, `properties`, refer to [`azure_generic_resource`]({{< relref "azure_generic_resource.md#properties" >}}). | ||
|
||
Also, refer to [Azure documentation](https://docs.microsoft.com/en-us/rest/api/synapse/workspaces/get) for other properties available. | ||
|
||
## Examples | ||
|
||
**Test that the Synapse workspaces is provisioned successfully.** | ||
|
||
```ruby | ||
describe azure_synapse_workspace(resource_group: 'RESOURCE_GROUP', name: 'SYNAPSE_WORKSPACE_NAME') do | ||
its('properties.provisioningState') { should eq 'Succeeded' } | ||
end | ||
``` | ||
|
||
## Matchers | ||
|
||
{{% inspec_matchers_link %}} | ||
|
||
### exists | ||
|
||
```ruby | ||
# If a Synapse workspaces is found it will exist | ||
|
||
describe azure_synapse_workspace(resource_group: 'RESOURCE_GROUP', name: 'SYNAPSE_WORKSPACE_NAME') do | ||
it { should exist } | ||
end | ||
# if Synapse workspaces is not found it will not exist | ||
|
||
describe azure_synapse_workspace(resource_group: 'RESOURCE_GROUP', name: 'SYNAPSE_WORKSPACE_NAME') do | ||
it { should_not exist } | ||
end | ||
``` | ||
|
||
## Azure Permissions | ||
|
||
{{% azure_permissions_service_principal role="reader" %}} |
113 changes: 113 additions & 0 deletions
113
docs-chef-io/content/inspec/resources/azure_synapse_workspaces.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
+++ | ||
title = "azure_synapse_workspaces Resource" | ||
platform = "azure" | ||
draft = false | ||
gh_repo = "inspec-azure" | ||
|
||
[menu.inspec] | ||
title = "azure_synapse_workspaces" | ||
identifier = "inspec/resources/azure/azure_synapse_workspaces Resource" | ||
parent = "inspec/resources/azure" | ||
+++ | ||
|
||
Use the `azure_synapse_workspaces` InSpec audit resource to test properties related to all Azure Synapse workspaces. | ||
|
||
## Azure REST API Version, Endpoint, and HTTP Client Parameters | ||
|
||
{{% inspec_azure_common_parameters %}} | ||
|
||
## Installation | ||
|
||
{{% inspec_azure_install %}} | ||
|
||
## Syntax | ||
|
||
An `azure_synapse_workspaces` resource block returns all Azure Synapse workspaces. | ||
|
||
```ruby | ||
describe azure_synapse_workspaces do | ||
#... | ||
end | ||
``` | ||
|
||
## Parameters | ||
|
||
`resource_group` _(optional)_ | ||
: Azure resource group that the targeted resource resides in. | ||
|
||
## Properties | ||
|
||
`ids` | ||
: A list of resource IDs. | ||
|
||
: **Field**: `id` | ||
|
||
`names` | ||
: A list of resource Names. | ||
|
||
: **Field**: `name` | ||
|
||
`types` | ||
: A list of the resource types. | ||
|
||
: **Field**: `type` | ||
|
||
`properties` | ||
: A list of Properties for all the Synapse workspaces. | ||
|
||
: **Field**: `properties` | ||
|
||
`locations` | ||
: A list of the Geo-locations. | ||
|
||
: **Field**: `location` | ||
|
||
`provisioningStates` | ||
: A list of provisioning states of the Synapse workspaces. | ||
|
||
: **Field**: `provisioningState` | ||
|
||
{{% inspec_filter_table %}} | ||
|
||
## Examples | ||
|
||
**Loop through Synapse workspaces by their names.** | ||
|
||
```ruby | ||
azure_synapse_workspaces.names.each do |name| | ||
describe azure_synapse_workspace(resource_group: 'RESOURCE_GROUP', name: name) do | ||
it { should exist } | ||
end | ||
end | ||
``` | ||
|
||
**Test that there are Synapse workspaces that are successfully provisioned.** | ||
|
||
```ruby | ||
describe azure_synapse_workspaces(resource_group: 'RESOURCE_GROUP').where(provisioningState: 'Succeeded') do | ||
it { should exist } | ||
end | ||
``` | ||
|
||
## Matchers | ||
|
||
{{% inspec_matchers_link %}} | ||
|
||
### exists | ||
|
||
```ruby | ||
# Should not exist if no Synapse workspaces are present | ||
|
||
describe azure_synapse_workspaces(resource_group: 'RESOURCE_GROUP') do | ||
it { should_not exist } | ||
end | ||
# Should exist if the filter returns at least one Synapse workspaces | ||
|
||
describe azure_synapse_workspaces(resource_group: 'RESOURCE_GROUP') do | ||
it { should exist } | ||
end | ||
``` | ||
|
||
## Azure Permissions | ||
|
||
{{% azure_permissions_service_principal role="reader" %}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
require 'azure_generic_resource' | ||
|
||
class AzureSynapseWorkspace < AzureGenericResource | ||
name 'azure_synapse_workspace' | ||
desc 'Retrieves and verifies the settings of an Azure Synapse Workspace.' | ||
example <<-EXAMPLE | ||
describe azure_synapse_workspace(resource_group: 'inspec-def-rg', name: 'synapse-ws') do | ||
it { should exist } | ||
end | ||
EXAMPLE | ||
|
||
def initialize(opts = {}) | ||
raise ArgumentError, 'Parameters must be provided in an Hash object.' unless opts.is_a?(Hash) | ||
|
||
opts[:resource_provider] = specific_resource_constraint('Microsoft.Synapse/workspaces', opts) | ||
super(opts, true) | ||
end | ||
|
||
def to_s | ||
super(AzureSynapseWorkspace) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
require 'azure_generic_resources' | ||
|
||
class AzureSynapseWorkspaces < AzureGenericResources | ||
name 'azure_synapse_workspaces' | ||
desc 'Verifies settings for a collection of Azure Synapse Workspaces' | ||
example <<-EXAMPLE | ||
describe azure_synapse_workspaces do | ||
it { should exist } | ||
end | ||
EXAMPLE | ||
|
||
def initialize(opts = {}) | ||
raise ArgumentError, 'Parameters must be provided in an Hash object.' unless opts.is_a?(Hash) | ||
|
||
opts[:resource_provider] = specific_resource_constraint('Microsoft.Synapse/workspaces', opts) | ||
super(opts, true) | ||
return if failed_resource? | ||
|
||
populate_filter_table_from_response | ||
end | ||
|
||
def to_s | ||
super(AzureSynapseWorkspaces) | ||
end | ||
|
||
private | ||
|
||
def populate_table | ||
@resources.each do |resource| | ||
@table << resource.merge(resource[:properties]) | ||
.merge(resource.dig(:properties, :defaultDataLakeStorage)) | ||
.merge(resource.dig(:properties, :connectivityEndpoints)) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.