Skip to content

Commit

Permalink
fixed email change
Browse files Browse the repository at this point in the history
  • Loading branch information
fceller committed Mar 17, 2022
1 parent e8f3222 commit 64b6126
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 116 deletions.
15 changes: 5 additions & 10 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,22 @@ jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
-
name: Checkout
- name: Checkout
uses: actions/checkout@v2
-
name: Unshallow
- name: Unshallow
run: git fetch --prune --unshallow
-
name: Set up Go
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
-
name: Import GPG key
- name: Import GPG key
id: import_gpg
uses: hashicorp/[email protected]
env:
# These secrets will need to be configured for the repository:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
PASSPHRASE: ${{ secrets.PASSPHRASE }}
-
name: Run GoReleaser
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
Expand Down
56 changes: 28 additions & 28 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,33 @@ before:
# this is just an example and not a requirement for provider building/publishing
- go mod tidy
builds:
- env:
# goreleaser does not work with CGO, it could also complicate
# usage by users in CI/CD systems like Terraform Cloud where
# they are unable to install libraries.
- CGO_ENABLED=0
mod_timestamp: '{{ .CommitTimestamp }}'
flags:
- -trimpath
ldflags:
- '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
goos:
- freebsd
- windows
- linux
- darwin
goarch:
- amd64
- '386'
- arm
- arm64
ignore:
- goos: darwin
goarch: '386'
binary: '{{ .ProjectName }}_v{{ .Version }}'
- env:
# goreleaser does not work with CGO, it could also complicate
# usage by users in CI/CD systems like Terraform Cloud where
# they are unable to install libraries.
- CGO_ENABLED=0
mod_timestamp: '{{ .CommitTimestamp }}'
flags:
- -trimpath
ldflags:
- '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
goos:
- freebsd
- windows
- linux
- darwin
goarch:
- amd64
- '386'
- arm
- arm64
ignore:
- goos: darwin
goarch: '386'
binary: '{{ .ProjectName }}_v{{ .Version }}'
archives:
- format: zip
name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
- format: zip
name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
checksum:
name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS'
algorithm: sha256
Expand All @@ -48,7 +48,7 @@ signs:
- "--detach-sign"
- "${artifact}"
release:
# If you want to manually examine the release before its live, uncomment this line:
# draft: true
# If you want to manually examine the release before its live, uncomment this line:
# draft: true
changelog:
skip: true
70 changes: 46 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,67 @@
This terraform provider allows to perform Create ,Read ,Update, Delete, Import and Deactivate Zoom Users.
This terraform provider allows to perform Create ,Read ,Update, Delete, Import and Deactivate Zoom Users.

## Requirements

* [Go](https://golang.org/doc/install) 1.16 <br>
* [Terraform](https://www.terraform.io/downloads.html) 0.13.x <br/>
* [Zoom](https://zoom.us/) Pro/Premium account
* [Zoom](https://zoom.us/) Pro/Premium account
* [Zoom API Documentations](https://marketplace.zoom.us/docs/api-reference/zoom-api/users)


## Application Account

***This provider can only be successfully tested on a premium paid zoom account.*** <br><br>

### Setup

1. Create a zoom account with paid subscription (PRO Plan/Business Account). (https://zoom.us/)<br>

### API Authentication

1. Go to [Zoom Marketplace](https://marketplace.zoom.us/)<br>
2. Click on `Build App`. For our purpose we need to make a JWT App. <br>
3. Follow this [Create JWT Zoom App](https://marketplace.zoom.us/docs/guides/build/jwt-app) website to make an app. <br>
4. This app will provide us with the zoom_api_secret, zoom_api_key, and ZOOM_TOKEN which will be needed to configure our provider and make request. <br>

4. This app will provide us with the zoom_api_secret, zoom_api_key, and ZOOM_TOKEN which will be needed to configure our
provider and make request. <br>

## Building the Provider
1. Clone the repository, add all the dependencies and create a vendor directory that contains all dependencies. For this, run the following commands:

1. Clone the repository, add all the dependencies and create a vendor directory that contains all dependencies. For
this, run the following commands:

```cd terraform-provider-zoom
go mod init terraform-provider-zoom
go mod tidy
go mod vendor
```


## Managing terraform plugins
1. Run the following command to create a vendor subdirectory which will comprise of all provider dependencies. <br>

1. Run the following command to create a vendor subdirectory which will comprise of all provider dependencies. <br>

```
%APPDATA%/terraform.d/plugins/${host_name}/${namespace}/${type}/${version}/${target}
```
Command:

Command:

```bash
mkdir -p %APPDATA%/terraform.d/plugins/hashicorp.com/edu/zoom/0.2.0/[OS_ARCH]
```

For eg. `mkdir -p %APPDATA%/terraform.d/plugins/hashicorp.com/edu/zoom/0.2.0/windows_amd64`<br>

2. Run `go build -o terraform-provider-zoom.exe`. This will save the binary (`.exe`) file in the main/root directory. <br>
2. Run `go build -o terraform-provider-zoom.exe`. This will save the binary (`.exe`) file in the main/root
directory. <br>
3. Run this command to move this binary file to appropriate location.

```
move terraform-provider-zoom.exe %APPDATA%\terraform.d\plugins\hashicorp.com\edu\zoom\0.2.0\[OS_ARCH]
```

[OR]

1. Manually move the file from current directory to destination directory <br>


## Working with terraform

### Application Credential Integration in terraform
Expand All @@ -61,35 +71,43 @@ For eg. `mkdir -p %APPDATA%/terraform.d/plugins/hashicorp.com/edu/zoom/0.2.0/win
3. Assign the above credentials to the respective field in the `provider` block.

### Basic Terraform Commands

1. `terraform init` - To initialize a working directory containing Terraform configuration files.
2. `terraform plan` - To create an execution plan. Displays the changes to be done.
3. `terraform apply` - To execute the actions proposed in a Terraform plan. Apply the changes.

### Create User
1. Add the user email, first name, last name, status, license_type, deartment, job_title, location in the respective field as shown in [example usage](#example-usage).

1. Add the user email, first name, last name, status, license_type, deartment, job_title, location in the respective
field as shown in [example usage](#example-usage).
2. Run the basic terraform commands.<br>
3. On successful execution, sends an account setup mail to user.<br>

### Update the user
1. Update the data of the user in the `resource` block as show in [example usage](#example-usage) and run the basic terraform commands to update user.
User is not allowed to update `email`.


1. Update the data of the user in the `resource` block as show in [example usage](#example-usage) and run the basic
terraform commands to update user. User is not allowed to update `email`.

2. Update the `status` of User from `active` to `inactive` or viceversa and run the basic terraform commands.

### Read the User Data

Add `data` and `output` blocks as shown in the [example usage](#example-usage) and run the basic terraform commands.

### Delete the user

Delete the `resource` block of the user and run `terraform apply`.

#### Import a User Data
1. Write manually a `resource` configuration block for the user as shown in [example usage](#example-usage). Imported user will be mapped to this block.
2. Run the command `terraform import zoom_user.user1 [EMAIL_ID]` to import user.
3. Run `terraform plan`, if output shows `0 to add, 0 to change and 0 to destroy` user import is successful, otherwise recheck the user data in `resource` block with user data in Zoom website.


1. Write manually a `resource` configuration block for the user as shown in [example usage](#example-usage). Imported
user will be mapped to this block.
2. Run the command `terraform import zoom_user.user1 [EMAIL_ID]` to import user.
3. Run `terraform plan`, if output shows `0 to add, 0 to change and 0 to destroy` user import is successful, otherwise
recheck the user data in `resource` block with user data in Zoom website.

## Example Usage <a id="example-usage"></a>

```terraform
terraform {
required_providers {
Expand Down Expand Up @@ -128,9 +146,12 @@ output "user1" {

## Argument Reference

* `zoom_api_key`(Required, string) - The Zoom API Key. This may also be set via the `"ZOOM_API_KEY"` environment variable.
* `zoom_api_secret`(Required, string) - The Zoom API Secret. This may also be set via the `"ZOOM_API_SECRET"` environment variable.
* `timeout_minutes` (Optional, int) - The duration for which retries to be performed when an API request fails with API Rate limit error. This may also be set via the `"ZOOM_TIMEOUT_MINUTES"` environment variable. Default value is 2.
* `zoom_api_key`(Required, string) - The Zoom API Key. This may also be set via the `"ZOOM_API_KEY"` environment
variable.
* `zoom_api_secret`(Required, string) - The Zoom API Secret. This may also be set via the `"ZOOM_API_SECRET"`
environment variable.
* `timeout_minutes` (Optional, int) - The duration for which retries to be performed when an API request fails with
API Rate limit error. This may also be set via the `"ZOOM_TIMEOUT_MINUTES"` environment variable. Default value is 2.
* `email`(Required, string) - The email id associated with the user account.
* `first_name`(Required, string) - First name of the User.
* `last_name`(Required, string) - Last Name / Family Name / Surname of the User.
Expand All @@ -142,14 +163,15 @@ output "user1" {
* `location`(Optional, string) - Department of the particular user.
* `pmi`(Optional, integer) - Personal Meeting ID of the user.
* `use_pmi`(Optional, bool) - If true means use PMI for instant meetings.
* `timezone`(Optional, string) - Time zone ID of user. For values refer [here](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones).
* `timezone`(Optional, string) - Time zone ID of user. For values
refer [here](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#timezones).
* `vanity_name`(Optional, string) - Personal Meeting Room Name.
* `host_key`(Optional, string) - Host Key of user.
* `group_id`(Optional, string) - Unique identifier of group to which user to be added.
* `manager`(Optional, string) - Name or Email of Manager of the User.
* `phone_numbers`(Optional, set of maps) - Maps contain keys code, country, number, label.
* `language`(Optional, string) - Language of User.
* `cms_user_id`(Optional, string) - CMS User ID of User.
* `cms_user_id`(Optional, string) - CMS User ID of User.
* `pronouns`(Optional, string) - User's pronouns.
* `pronouns_option`(Optional, int) - User's display pronouns setting.
* `role_name`(Computed, string) - Current role of the user i.e., (Admin,Member).
Expand Down
2 changes: 1 addition & 1 deletion client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func TestClient_NewItem(t *testing.T) {
t.Run(tc.testName, func(t *testing.T) {
apiToken := token.GenerateToken(os.Getenv("ZOOM_API_SECRET"), os.Getenv(os.Getenv("ZOOM_API_KEY")))
client := NewClient(apiToken, 2)
err := client.NewUser(tc.user)
_, err := client.NewUser(tc.user)
if tc.expectErr {
assert.Error(t, err)
return
Expand Down
3 changes: 2 additions & 1 deletion zoom/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@

1-make TF_ACC = true (set environment variable,this is to run the acceptance testing) <br />

2-Hashicorp has provider some inbuilt packages which we can use to implemet our testing ie. resource("github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource") <br />
2-Hashicorp has provider some inbuilt packages which we can use to implemet our testing ie. resource("
github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource") <br />

3-we set up a resource.Test and provide it with the following: <br />
PreCheck,Providers,CheckDestroy,Steps <br />
Expand Down
Loading

0 comments on commit 64b6126

Please sign in to comment.