Skip to content
This repository was archived by the owner on Mar 28, 2024. It is now read-only.

Commit 9992f15

Browse files
committed
Repository changes for being made public
Signed-off-by: Adam Fowler <adam@adamfowler.org>
1 parent f9a3a45 commit 9992f15

File tree

8 files changed

+114
-187
lines changed

8 files changed

+114
-187
lines changed

CONTRIBUTING.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
# Contributing to terraform-provider-namespace-management
22

3-
TODO replace with CLA (As it's Apache 2.0)
4-
53
The terraform-provider-namespace-management project team welcomes contributions from the community. Before you start working with terraform-provider-namespace-management, please
6-
read our [Developer Certificate of Origin](https://cla.vmware.com/dco). All contributions to this repository must be
4+
Read our [Contributor License Agreement](https://cla.vmware.com/cla/1/preview). All contributions to this repository must be
75
signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on
86
as an open-source patch.
97

108
## Contribution Flow
119

1210
This is a rough outline of what a contributor's workflow looks like:
1311

14-
- Create a topic branch from where you want to base your work
12+
- Create a topic branch from where you want to base your work using the naming convention feature-GITHUBISSUENUM as per GitFlow
1513
- Make commits of logical units
1614
- Make sure your commit messages are in the proper format (see below)
1715
- Push your changes to a topic branch in your fork of the repository
@@ -21,19 +19,19 @@ Example:
2119

2220
``` shell
2321
git remote add upstream https://github.com/vmware-tanzu-labs/terraform-provider-namespace-management.git
24-
git checkout -b my-new-feature main
22+
git checkout -b my-new-feature develop
2523
git commit -a
2624
git push origin my-new-feature
2725
```
2826

2927
### Staying In Sync With Upstream
3028

31-
When your branch gets out of sync with the vmware-tanzu-labs/main branch, use the following to update:
29+
When your branch gets out of sync with the vmware-tanzu-labs/develop branch, use the following to update:
3230

3331
``` shell
3432
git checkout my-new-feature
3533
git fetch -a
36-
git pull --rebase upstream main
34+
git pull --rebase upstream develop
3735
git push --force-with-lease origin my-new-feature
3836
```
3937

MAINTAINERS.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Maintainers
2+
3+
The project maintainers are listed below:-
4+
5+
Adam Fowler, VMware Inc. - Project Lead - adamf at vmware dot com or adam at adamfowler dot org.

NOTICE

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1-
Copyright 2022 VMware, Inc.
1+
Copyright 2022 VMware, Inc.
22

3-
This product is licensed to you under the Apache License, V2.0 (the "License"). You may not use this product except in compliance with the License.
4-
5-
This product may include a number of subcomponents with separate copyright notices and license terms. Your use of these subcomponents is subject to the terms and conditions of the subcomponent's license, as noted in the LICENSE file.
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
7+
http://www.apache.org/licenses/LICENSE-2.0
8+
9+
Unless required by applicable law or agreed to in writing, software
10+
distributed under the License is distributed on an "AS IS" BASIS,
11+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
See the License for the specific language governing permissions and
13+
limitations under the License.

README.md

Lines changed: 86 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -16,76 +16,112 @@ vSphere namespace. There is no internal vSphere REST API for this by design.
1616
Likewise, creating the underlying infrastructure in vSphere can be
1717
accomplished by using the
1818
[HashiCorp vSphere provider](https://registry.terraform.io/providers/hashicorp/vsphere)
19-
and the [Avi Terraform Provider]().
20-
An example of these being used alongside our Workload Management
19+
and the [Avi Terraform Provider](https://registry.terraform.io/providers/vmware/avi).
20+
An end to end example of these being used alongside our Workload Management
2121
Terraform provider is provided in the
2222
examples/full_esxi_tanzu_cluster sample.
2323

24-
## Pre initial release sprints
24+
## Planned feature sprints
2525

26-
- Alpha 1
27-
- Single Avi controller instance, Avi Essentials configuration only, v21.1.2
28-
- vDS networking 7.0u2 and 7.0u3 support for vCenter
26+
- Alpha 1 (Completed Friday 15 Jul 2022)
27+
- Module: Single Avi controller instance, Avi Essentials configuration only, v21.1.2
28+
- Module: vDS networking 7.0u2 and 7.0u3 support for vCenter
2929
- Works with latest photon build for TKGS (see concourse/combinations/README.md)
3030
- Tested against h2o.vmware.com and my own homelab nested esxi environment
3131
- No automated CI/CD testing
32-
- Manual uploading of OVAs and manual Content Library creation
32+
- Module: Manual uploading of OVAs and manual Content Library creation
3333
- Add all necessary repo files (Update CLA from DCO, CONTRIBUTING changes for this too)
3434
- Support manual build only (Provider not yet added to Terraform registry)
35-
- Govmomi bug fixes and enhancements contributed back to project
35+
- Add develop branch
3636
- REQUEST REPO BE MADE PUBLIC
3737
- Alpha 2
38-
- Functional validation tests post cluster creation (Node up, node reachable)
39-
- Overarching Concourse tests for develop branch
40-
- Concourse loads environment combinations and runs multiple env pipelines in order using Terraform
41-
- Support n-2 photon versions
42-
- Automate testing on h20 (7.0u2) and homelab (7.0u3) using Concourse remote workers
43-
- This is a total of 6 combinations
44-
- Include initial vDS creation
45-
- Include file upload from staging to datastore
46-
- Include content library creation and uploading of TKR releases
47-
- Produce test report summary files for develop branch
38+
- Provider: Govmomi bug fixes and enhancements contributed back to project as PRs
39+
- Provider: Basic CI testing of Terraform Provider in isolation (In Go, via GitHub CI) for develop branch
40+
- Provider: Functional validation tests post cluster creation (Node up, node reachable)
41+
- Provider: Produce test report summary files for develop branch
42+
- Provider: Delete, create and status work as Terraform requires
43+
- Module: Include initial vDS creation
44+
- Module: Include file upload from staging to datastore
45+
- Module: Include content library creation and uploading of TKR releases
46+
- Offline 'local' support (Airgapped)
47+
- Online subscribed support (non Airgapped)
4848
- Project introduction video
4949
- Support manual build only (Provider not yet added to Terraform registry)
5050
- Beta 1
5151
- Beta builds submitted automatically to Terraform registry on tag and release (main branch)
5252
- Full sample documentation
53-
- Include support for TkgServiceConfiguration customisation
54-
- Include support for Custom ingress and egress CIDR ranges, CA certs
55-
- Include restriction of Certs used for EC P-256
56-
- Multi-node Avi controller support
57-
- Avi Enterprise support (including license key upload)
58-
- Add more version combinations
59-
- n-2 Avi version support
60-
- This is a total of 12 combinations
61-
- Bootstrap Harbor VM support
62-
- Helm Harbor services cluster support and sample
63-
- Node/pod communication check tests (VMs, Pods)
64-
- More detailed Concourse build success reports
53+
- Provider: Custom CA cert support for Supervisor Cluster
54+
- Module: Multi-node Avi controller support
55+
- Module: Avi Enterprise support (including license key upload)
56+
- Module: More detailed build success reports
57+
- Announcement email internal to VMware Tanzu SE community to try and test out
6558
- Beta 2
66-
- Add more version and environment combinations
59+
- Provider: NSX-T networking configuration support
60+
- Provider: Enable the built in Harbor on Supervisor Cluster
61+
- Module: Add more version and environment combinations
6762
- Include basic Workload Cluster creation for photon and ubuntu TKR at n-2 (Only 2 supported currently)
6863
- Latest NSX-T support with own load balancer
6964
- This is 48 combinations in total
65+
- Module: Support for shared and standalone prometheus, grafana
66+
- Release Testing: A Tagged branch results in an end to end test, and test results being added to a (Beta) release
7067
- NSX-T support intro video
71-
- Built in Harbor support
72-
- Support for shared and standalone prometheus, grafana
73-
- Initial full release
68+
- Beta 3
69+
- Provider: Create/delete namespace (With network, storage policy, resource limits, t-shirt sizes allowed)
70+
- Provider: Add/delete workload network
71+
- Provider: Assign/remove vSphere SSO group access to namespace
72+
- Provider: Apply license (and check license as per: https://developer.vmware.com/apis/vsphere-automation/latest/vcenter/namespace_management/hosts_config/)
73+
- Module: (Kubernetes Provider) Include support for TkgServiceConfiguration injection (and customisation) to Supervisor Cluster
74+
- Module: (Kubernetes Provider) Create workload cluster config and submit it
75+
- Determine releasing version number convention (Recommend v1 until terraform config incompatability)
76+
- v1.0 useable product at this point for end to end creation by customers
77+
- Provider: Add supported vSphere version check to enablement call
78+
- Pre-release documentation
79+
- Provider: Document supported vSphere versions
80+
- Pre-release videos
81+
- Work with OSPO and Tanzu teams for announcement
82+
- v1.1 Day 2 operations focused
83+
- Module: Add new TKR release to Content Library
84+
- Provider: Add fail-fast checks (compatible networks, hosts, versions (TKR, vSphere, Avi, NSX-T, vDS Switch))
85+
- v1.2 Security lockdown configuration simplification
86+
- Module: Include support for Custom ingress and egress CIDR ranges in TkgServiceConfiguration
87+
- Module: CA certs for all components
88+
- Module: Tests to verify ca cert changes
89+
- Module: Include restriction of Certs used for EC P-256
90+
- v1.3 Workload cluster common patterns
91+
- Module: Bootstrap Harbor VM support (Requires a Harbor OVA)
92+
- Module: Helm Harbor services cluster support and sample (Requires a bootstrap harbor)
93+
- Module: Node/pod communication check tests (VMs, Pods)
94+
- v1.4 End to End regression testing against our other products
95+
- Regression CD testing, via tag rather than commit
96+
- Provider: Overarching tests for develop branch
97+
- Provider: Concourse loads environment combinations and runs multiple env pipelines in order using Terraform
98+
- Support n-2 photon versions
99+
- Automate testing on h20 (7.0u2) and homelab (7.0u3) using remote workers
100+
- This is a total of 6 combinations
101+
- Module: Add more version combinations
102+
- n-2 Avi version support
103+
- This is a total of 12 combinations
104+
- v1.5 Full testing suite for CD (No changes to Provider)
74105
- Add new environment and versions
75106
- NSX-T n-2 version support
76107
- NSX-T support with Avi load balancer
77108
- Latest ESXi/vSphere version tested (currently 7.0u3d)
78109
- n-2 tests for Avi Load Balancer, Avi Terraform Plugin (Matched to Avi), NSX-T and NSX-T Terraform Plugin (Matched to NSX-T)
79110
- This is 576 combinations
80-
- Full suite of tests (main and develop branches) with all latest minor releases of k8s TKRs
81-
- Tanzu Standard on top of vSphere for Tanzu, with restricted psp/opa
111+
- Full suite of tests (using tags on the main and develop branches) with all latest minor releases of k8s TKRs
112+
- Module: Tanzu Standard on top of vSphere for Tanzu, with restricted psp/opa
82113
- Istio with ingress, egress, istio-cni, minimum extra permissions (just the CNI pod)
83114
- Kiali support for istio configuration validation/manual checking
84115
- Full release documentation
85-
- Launch video
86-
116+
- Video
117+
- TODO Discuss with Automation team on additional features for their tool
118+
- v? Other namespace-management API endpoints not discussed above
119+
- Based on customer feedback only
120+
- No other endpoints known used today
121+
- For a full list: https://developer.vmware.com/apis/vsphere-automation/latest/vcenter/namespace_management/
122+
- E.g. changing password rotation settings as per https://developer.vmware.com/apis/vsphere-automation/latest/vcenter/api/vcenter/namespace-management/clusters/clusteractionrotate_password/post/
87123

88-
## Status (PRIOR TO INITIAL PUBLIC RELEASE ONLY, THEN REMOVED FROM HERE)
124+
## Namespace Management API support status
89125

90126
- data_source_clusters
91127
- clustersRead()
@@ -104,33 +140,34 @@ examples/full_esxi_tanzu_cluster sample.
104140
- clusterCreate()
105141
- Given a vSphere cluster ID (NOT name) like 'domain-c1005', enables workload management
106142
- Uses POST /api/vcenter/namespace-management/clusters/{cluster}?action=enable
107-
- Implemented, untested, see examples/01_basic_create/clusters/main.tf
108-
- Uses hardcoded cluster enable spec data today
109-
- Limited to NSX-T today rather than full information due to missing govmomi features: https://github.com/vmware/govmomi/issues/2860
110-
- Warning: Due to the above, the workload cluster NTP source(s) will not be set, which will cause your workload clusters to not spin up successfully until you manually add this configuration element via vCenter
143+
- Implemented, tested, see examples/01_basic_create/clusters/main.tf and examples/full_esxi_tanzu_cluster/main.tf
144+
- Only tested on vSphere networking (not NSX-T) today
111145
- clusterRead()
112146
- Given a cluster NAME (NOT id) like 'Cluster01' returns the cluster's Tanzu Supervisor Cluster summary
113147
- Uses List method as data_clusters clusterRead today
114148
- Working, see see examples/02_basic_read/clusters/main.tf
115149
- Limited to cluster summary today rather than full information due to missing govmomi feature: https://github.com/vmware/govmomi/issues/2860
150+
- Implies that we cannot implement clusterUpdate() too until this issue is resolved upstream
116151
- clusterUpdate()
117152
- Given a vSphere cluster ID (NOT name) like 'domain-c1005', replaces the current cluster enable spec with a new full spec
118-
- Not implemented today
153+
- Not yet implemented
119154
- clusterDelete()
120155
- Given a vSphere cluster ID (NOT name) like 'domain-c1005', disables workload management
121156
- Doesn't actually delete the vSphere cluster, just the Tanzu Supervisor Cluster
122-
- Not implemented
157+
- Not yet implemented
123158

124159
## Try it out
125160

126161
### Prerequisites
127162

128163
* You must have Terraform installed on your system
129164
* You must have a Go runtime installed with corresponding build tools
130-
* You must have a vSphere 7.0 update 2 (7.0.2) system configured with a vCenter and at least two hosts (ideally 3 or more)
165+
* You must have a vSphere 7.0 update 2 (7.0.2) or above system configured with a vCenter and at least ESXi two hosts (ideally 3 or more)
131166

132167
## Building the provider
133168

169+
Note that in the current version a patched release of Govmomi is required. You can fetch, build and install this from this URL: https://github.com/adamfowleruk/govmomi/tree/issue-2860 . We will remove this before the first major release once the fixes are applied in Govmomi.
170+
134171
Run the following command to build the provider
135172

136173
```shell
@@ -145,39 +182,21 @@ First, build and install the provider.
145182
make install
146183
```
147184

148-
Download the simulator from here:
149-
150-
TODO REWORK THIS SECTION TO NOT USE THE SIMULATOR
151-
152-
Now unpack and run the VMware simulator
153-
```shell
154-
cat ~/Downloads/vcsim_PLATFORM_ARCH.tar.gz | sudo tar -C /usr/local/bin -xzvf - vcsim
155-
vcsim &
156-
```
157-
158-
This will report `export GOVC_URL=https://user:pass@127.0.0.1:8989/sdk GOVC_SIM_PID=69867` when running
185+
Edit the sample file to customise it to your vSphere environment. You can find this in examples/02-basic-create/main.tf
159186

160187
Then, run the following command to initialize the workspace and apply the sample configuration.
161188

162189
```shell
163-
cd examples/SOME_EXAMPLE
190+
cd examples/02-basic-create
164191
terraform init && terraform apply
165192
```
166193

167-
### Build & Run
168-
169-
1. Step 1
170-
2. Step 2
171-
3. Step 3
172-
173194
## Documentation
174195

175196
## Contributing
176197

177-
TODO REPLACE WITH CLA (As it's Apache 2)
178-
179198
The terraform-provider-namespace-management project team welcomes contributions from the community. Before you start working with terraform-provider-namespace-management, please
180-
read our [Developer Certificate of Origin](https://cla.vmware.com/dco). All contributions to this repository must be
199+
Read our [Contributor License Agreement](https://cla.vmware.com/cla/1/preview). All contributions to this repository must be
181200
signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on
182201
as an open-source patch. For more detailed information, refer to [CONTRIBUTING.md](CONTRIBUTING.md).
183202

concourse/combinations/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ We only test currently supported versions, and upcoming versions.
44
We presume upcoming versions are backward compatible with the latest
55
previous minor version unless told otherwise.
66

7-
Note: Currently (June 2022) this project supports its modules and providers for
7+
Note: Currently (July 2022) this project supports its modules and providers for
88
Terraform on a best efforts, open source basis. This is a Tanzu Labs project rather
99
than a fully VMware supported product offering at this time. If you'd like this to
1010
change please provide regular feedback to your VMware Tanzu Sales Engineer.

0 commit comments

Comments
 (0)