Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resource 106 hpc asc operations #649

Merged
merged 7 commits into from
Apr 8, 2022
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 81 additions & 79 deletions README.md

Large diffs are not rendered by default.

36 changes: 15 additions & 21 deletions docs-chef-io/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Chef InSpec Azure Resource Documentation

This is the home of the InSpec Azure resource documentation found on
<https://docs.chef.io/inspec/resources/#azure>.
Home page of the InSpec Azure resource documentation is at <https://docs.chef.io/inspec/resources/#azure>.

We use [Hugo](https://gohugo.io/) to incorporate documentation from this repository into `chef/chef-web-docs` and deploy it on <https://docs.chef.io>.

Expand Down Expand Up @@ -70,26 +69,27 @@ which will render the following text:

> Your [Service Principal](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal) must be set up with at least a `contributor` role on the subscription you wish to test.
**Note:** You can add shortcodes from other repositories. For example, the `inspec_filter_table.md` and the `inspec_matchers_link.md` shortcodes are both located in the chef/chef-web-docs repository, but they can be added to this documentation set using the same method described above.
{{< note >}}

You can add shortcodes from other repositories. For example, the `inspec_filter_table.md` and the `inspec_matchers_link.md` shortcodes are both located in the chef/chef-web-docs repository, but they can be added to this documentation set using the same method described above.

{{< /note >}}

### Release Dates

The chef/chef-web-docs repository uses the `release-dates.json` file in `docs-chef-io/assets/release-notes/inspec-azure` to generate release notes on <https://docs.chef.io/release_notes_inspec_azure/>. See below for more information on release notes for inspec-azure.

## Update the InSpec Repository Module In `chef/chef-web-docs`

We use [Hugo modules](https://gohugo.io/hugo-modules/) to build Chef's documentation
from multiple repositories.
We use [Hugo modules](https://gohugo.io/hugo-modules/) to build Chef's documentation from multiple repositories.

When release notes are announced for inspec-azure, the documentation for inspec-azure is updated at the same time. See the section below on release notes.

A member of the Docs Team can also update the inspec-azure resource documentation at any time when new resources are ready to be added to <docs.chef.io>.
A member from the Documentation Team can also update the inspec-azure resource documentation at any time when new resources are ready to be added to <docs.chef.io>.

## Local Development Environment

We use [Hugo](https://gohugo.io/), [Go](https://golang.org/), and[NPM](https://www.npmjs.com/)
to build the Chef Documentation website. You will need Hugo 0.93.1 or higher
installed and running to build and view our documentation.
We use [Hugo](https://gohugo.io/), [Go](https://golang.org/), and[NPM](https://www.npmjs.com/) to build the Chef Documentation website. You will need Hugo 0.93.1 or higher installed and running to build and view our documentation.

To install Hugo, NPM, and Go on Windows and macOS:

Expand All @@ -106,10 +106,7 @@ To install Hugo on Linux, run:

### make serve

Run `make serve` to build a local preview of the InSpec Azure resource documentation.
This will clone a copy of `chef/chef-web-docs` into the `docs-chef-io` directory.
That copy will be configured to build the InSpec Azure resource documentation from the `docs-chef-io` directory
and live reload if any changes are made while the Hugo server is running.
Run `make serve` to build a local preview of the InSpec Azure resource documentation. This clones a copy of `chef/chef-web-docs` into the `docs-chef-io` directory and configures to build the InSpec Azure resource documentation. Then the live reload happens if any changes made while the Hugo server is running.

- Run `make serve`
- go to <http://localhost:1313/inspec/resources/#azure>
Expand All @@ -136,13 +133,13 @@ Have a member of the documentation team review the Pending Release Notes file be

2. Run the `publish-release-notes.sh` script in `tools/release-notes`. You can run this from the Makefile with `make publish_release_notes`

This will push the pending release notes to the S3 chef-cd bucket, reset the Pending Release Notes file, and update the `release-dates.json` file in `assets/release-notes/inspec-azure`.
This command pushes the pending release notes to the S3 chef-cd bucket, reset the Pending Release Notes file, and update the `release-dates.json` file in `assets/release-notes/inspec-azure`.

3. Push up and merge a branch to `inspec/inspec-azure` with the changes made to the `release-dates.json` file.

### chef-web-docs

chef-web-docs is configured to open a PR that will update the inspec-azure content on <doc.chef.io> when a change is committed to the `release-dates.json` file in the inspec-azure repository. This will update the InSpec Azure resource documentation and update release notes for InSpec Azure resources.
chef-web-docs is configured to open a PR that updates the inspec-azure content on <doc.chef.io> when a change is committed to the `release-dates.json` file in the inspec-azure repository. This updates the InSpec Azure resource documentation and update release notes for InSpec Azure resources.

A member fo the documentation team can merge that PR for you as soon as it's made.

Expand All @@ -156,11 +153,8 @@ You can find the proper release notes in the Pending Release Notes file history

If you need support, contact [Chef Support](https://www.chef.io/support/).

**GitHub issues**
### GitHub issues

Submit an issue to the [inspec-azure repo](https://github.com/inspec/inspec-azure/issues)
for "important" documentation bugs that may need visibility among a larger group,
especially in situations where a documentation bug may also surface a product bug.
Submit an issue to the [inspec-azure repo](https://github.com/inspec/inspec-azure/issues) for **important** documentation bugs that may need visibility among a larger group, especially in situations where a documentation bug may also surface a product bug.

Submit an issue to [chef-web-docs](https://github.com/chef/chef-web-docs/issues) for
documentation feature requests and minor documentation issues.
Submit an issue to [chef-web-docs](https://github.com/chef/chef-web-docs/issues) for documentation feature requests and minor documentation issues.
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
+++
title = "azure_hpc_asc_operation Resource"
platform = "azure"
draft = false
gh_repo = "inspec-azure"

[menu.inspec]
title = "azure_hpc_asc_operation"
identifier = "inspec/resources/azure/azure_hpc_asc_operation Resource"
parent = "inspec/resources/azure"
+++

Use the `azure_hpc_asc_operation` InSpec audit resource to test the properties related to an Azure HPC ASC Operation.

## Azure REST API Version, Endpoint, and HTTP Client Parameters

{{% inspec_azure_common_parameters %}}

## Installation

{{% inspec_azure_install %}}

## Syntax

`name`, `cache_name`, and `resource_group` are required parameters.

```ruby
describe azure_hpc_asc_operation(location: 'LOCATION', operation_id: 'OPERATION_ID') do
it { should exist }
its('type') { should eq 'Microsoft.StorageCache/Cache/StorageTarget' }
its('location') { should eq 'East US' }
end
```

```ruby
describe azure_hpc_asc_operation(location: 'LOCATION', operation_id: 'OPERATION_ID') do
it { should exist }
end
```

## Parameters

`location` _(required)_
: The name of the region used to look up the operation.

`operation_id` _(required)_
: The operation ID that uniquely identifies the asynchronous operation.

## Properties

`id`
: The operation Id.

`name`
: The operation name.

`startTime`
: The start time of the operation.

`status`
: The status of the operation.

`endTime`
: The end time of the operation.

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/storagecache/asc-operations/get#ascoperation) for other properties available.

## Examples

**Test that the HPC ASC Operation is Succeeded.**

```ruby
describe azure_hpc_asc_operation(location: 'LOCATION', operation_id: 'OPERATION_ID') do
its('status') { should eq 'Succeeded' }
end
```

## Matchers

{{% inspec_matchers_link %}}

### exists

```ruby
# If a HPC ASC Operation is found it will exist
describe azure_hpc_asc_operation(location: 'LOCATION', operation_id: 'OPERATION_ID') do
it { should exist }
end
# if HPC ASC Operation is not found it will not exist
describe azure_hpc_asc_operation(location: 'LOCATION', operation_id: 'OPERATION_ID') do
it { should_not exist }
end
```

## Azure Permissions

{{% azure_permissions_service_principal role="reader" %}}
24 changes: 24 additions & 0 deletions libraries/azure_hpc_asc_operation.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'azure_generic_resource'

class AzureHPCASCOperation < AzureGenericResource
name 'azure_hpc_asc_operation'
desc 'Retrieves and verifies the settings of an Azure HPC ASC Operation'
example <<-EXAMPLE
describe azure_hpc_asc_operation(location: 'westus', operation_id: 'testoperationid') 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.StorageCache/locations', opts)
opts[:required_parameters] = %i(location operation_id)
opts[:resource_path] = [opts[:location], 'ascOperations', opts[:operation_id]].join('/')
super(opts, true)
end

def to_s
super(AzureHPCASCOperations)
end
end
9 changes: 9 additions & 0 deletions test/integration/verify/controls/azure_hpc_asc_operation.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
location = input(:location, value: '')

control 'Verify settings of an Azure HPC ASC Operation' do
describe azure_hpc_asc_operation(location: location, operation_id: 'testoperation') do
it { should exist }
its('name') { should eq 'testoperation' }
its('status') { should eq 'Succeeded' }
end
end
17 changes: 17 additions & 0 deletions test/unit/resources/azure_hpc_asc_operation_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require_relative 'helper'
require 'azure_hpc_asc_operation'

class AzureHPCASCOperationConstructorTest < Minitest::Test
def test_empty_param_not_ok
assert_raises(ArgumentError) { AzureHPCASCOperation.new }
end

# resource_provider should not be allowed.
def test_resource_provider_not_ok
assert_raises(ArgumentError) { AzureHPCASCOperation.new(resource_provider: 'some_type') }
end

def test_resource_group_name_alone_not_ok
assert_raises(ArgumentError) { AzureHPCASCOperation.new(resource_group: 'test') }
end
end