|
| 1 | +# Comments |
| 2 | + |
| 3 | +- Local objects. |
| 4 | +- Smart cmdlets for |
| 5 | + - P2. Resource Group. |
| 6 | + - P2. Virtual Network. |
| 7 | + - P2. Security Group. |
| 8 | +- P2. Resource Ids, a tree structure |
| 9 | +- P1. Output for smart commands. In particular, information about (PS information stream ?) |
| 10 | + - Resource Group!!! |
| 11 | + - Virtual Network! |
| 12 | + - Security Group! |
| 13 | + - ...! |
| 14 | +- Security Rules: |
| 15 | + - DefaultSecurityRulesText - can/should we use it? |
| 16 | +- P2. information stream |
| 17 | +- P3. show progress |
| 18 | +- P1. return PowerShell Job (async) |
| 19 | + |
| 20 | +## Tasks |
| 21 | + |
| 22 | +P0 is 09/05/2017 |
| 23 | + |
| 24 | +- [ ] P0 output |
| 25 | +- [X] P0 create a package (PSM1, PSD1...) |
| 26 | + - [X] P0 Manifest with dependencies |
| 27 | +- image list |
| 28 | + - [X] P0: json file or PSObject |
| 29 | + - [ ] P1: json |
| 30 | + - [ ] P2: source of image names. CDN, Azure... ??? |
| 31 | +- names: |
| 32 | + - P0: based on VM name specified by user (see also CLI, Portal). |
| 33 | + - [X] P0: always fail if exist |
| 34 | + - P1: can we reuse it? ??? |
| 35 | + - P1: fallback: throw (suggests...) or reuse? |
| 36 | + - P1: default shared name for Network (something else?!). CLI?? Portal?? |
| 37 | +- P2 optional VM name. |
| 38 | +- P1 Create Or Update scenario. |
| 39 | +- P2 Rollback |
| 40 | + |
| 41 | +## Tasks |
| 42 | + |
| 43 | +- [X] P0: required modules |
| 44 | +- [ ] replace Write-Host |
| 45 | + - [X]: P0: remove Write-Host |
| 46 | + - [ ]: P1: add progress |
| 47 | +- [X] P0: parameter attributes |
| 48 | +- [ ] P0: Linux image |
| 49 | +- [ ] P0: more default parameters |
| 50 | +- [X] P0: having a package. |
| 51 | +- [ ] P1: Project build. |
| 52 | + |
| 53 | +## Graph |
| 54 | + |
| 55 | +1. `Location` |
| 56 | +1. `ResourceGroup` |
| 57 | + - depends on `Location` |
| 58 | + - children |
| 59 | + 1. `VirtualNetwork` |
| 60 | + - depends on `Location` |
| 61 | + - children |
| 62 | + 1. `Subnet` |
| 63 | + 1. `PublicIpAddress` |
| 64 | + - depends on `Location` |
| 65 | + 1. `SecurityGroup` |
| 66 | + - depends on `Location` |
| 67 | + - children |
| 68 | + 1. `SecurityRule` |
| 69 | + 1. `NetworkInterface` |
| 70 | + - depends on `PublicIpAddress`, `Subnet`, `SecurityGroup`, `Location` |
| 71 | + 1. `Vm` |
| 72 | + - depends on `NetworkInterface`, `Location` |
| 73 | + |
| 74 | +## Levels |
| 75 | + |
| 76 | +1. Resources: |
| 77 | + - `Location` (shared), |
| 78 | + - `ResourceGroup` (shared) <- `Location` |
| 79 | +1. Resources: |
| 80 | + - `SecurityGroup` -> `SecurityRule` |
| 81 | + - `Subnet` <- `VirtualNetwork` (shared?) |
| 82 | + - `PublicIpAddress` |
| 83 | +1. Resources: |
| 84 | + - `NetworkInterface` (unique) ? |
| 85 | +1. Resources: |
| 86 | + - `VM` |
| 87 | + |
| 88 | +## Behavior |
| 89 | + |
| 90 | +a parameter value: |
| 91 | + - undefined |
| 92 | + - user's value |
| 93 | + |
| 94 | +if a resource exists |
| 95 | + - then |
| 96 | + - else |
| 97 | + |
| 98 | +resource name: |
| 99 | +1. undefined |
| 100 | + 1. resource exists - reuse|with validation (fail? or workaround or interactive) |
| 101 | + 1. resource doesn't exist - create |
| 102 | +1. user's value |
| 103 | + 1. resource exist - reuse |
| 104 | + 1. resource doesn't exist - fail (create?) |
| 105 | + |
| 106 | +smart location. Should it depends on a resource group location? |
| 107 | + |
| 108 | +default parameters - work backward |
| 109 | + |
| 110 | +## Resource Acquisition Matrix |
| 111 | + |
| 112 | +1. A resource name is |
| 113 | + - undefined |
| 114 | + - user's specified name |
| 115 | + - user's specified id |
| 116 | +1. A resource |
| 117 | + - exists |
| 118 | + - doesn't exist |
| 119 | +1. A resource is |
| 120 | + - shared |
| 121 | + - unique |
| 122 | + |
| 123 | +## C# vs PowerShell |
| 124 | + |
| 125 | +### Proposal 1 |
| 126 | + |
| 127 | +- use C# to implement logic and type descriptions (no PowerShell dependencies, only .Net Standard and Azure SDK dependencies). |
| 128 | +- use PowerShell to make a facade. |
| 129 | + |
| 130 | +### Proposal 2 |
| 131 | + |
| 132 | +- use C# to implement logic and type descriptions (with PowerShell dependencies) |
| 133 | +- probably, no need for PSM1 files. |
| 134 | + |
| 135 | +### C# advantages |
| 136 | + |
| 137 | +- type/contract validations at compile time. |
| 138 | +- much more feature to express logic, relations etc. |
| 139 | +- testing is easier and, probably, faster. |
| 140 | +- performance ?. |
| 141 | +- customers may use the C# library for .Net programs (C#/VB/F#/...). |
| 142 | +- C# type system is much more mature and well documented compare to PowerShell v5 classes. |
| 143 | + |
| 144 | +## Tasks |
| 145 | + |
| 146 | +- changelog |
| 147 | +- remove warnings (-WarningAction=SilentContinue) |
| 148 | +- help |
| 149 | +- linux |
| 150 | +- e2e manual test (Windows, Linux). |
| 151 | +- feedback |
| 152 | +- (-Auto) |
| 153 | +- tab-completion |
| 154 | +- VMSS |
| 155 | +- rolling back |
| 156 | +- output object |
| 157 | + |
| 158 | +## 9/15 |
| 159 | + |
| 160 | +- [X] [P-1] help (in doc, example) |
| 161 | +- - signing (9/14) |
| 162 | +- output format (Get-AzureRmVm) |
| 163 | + - talk to Aaron |
| 164 | + - how to use (connect to VM etc). |
| 165 | +- output |
| 166 | + - information stream (Write-Information) |
| 167 | +- proper cmdlet + parameter attributes + struct |
| 168 | + - [X] positional parameters (PR) (position 0 for name) |
| 169 | +- [X] [P-1] shouldprocess (example) |
| 170 | + |
| 171 | +- [P0.5] validation (PSScript analyser) |
0 commit comments