verify-layer: cloud exports (AWS ECS/EC2/Lambda, Azure VMs/Container Instances/Container Apps/Web Apps, GCP Compute Engine/Cloud Run) read from the operator's own CLI export, never from an account; fixtures derived from the vendors' documented examples; a real account is unmeasured and the README says so
This commit is contained in:
parent
ea695dcf32
commit
ac14880703
@ -12,17 +12,21 @@ wrote it.
|
||||
Paths that DO resolve are written relative to a side-by-side checkout of the Aere repositories, so they begin with a
|
||||
repository name, for example `aere-contracts/contracts/pqc/AereCryptoRegistry.sol`.
|
||||
|
||||
Unresolvable distinct paths in this repository: **12**.
|
||||
Unresolvable distinct paths in this repository: **16**.
|
||||
|
||||
- `ContainerApps_ListBySubscription.json` cited in: aere-quantum/verify-layer/fixturi-cloud/README.md
|
||||
- `VirtualMachine_List_MaximumSet_Gen.json` cited in: aere-quantum/verify-layer/fixturi-cloud/README.md
|
||||
- `addresses.txt` cited in: aere-quantum/exposure-report/README.md
|
||||
- `antete.mjs` cited in: aere-quantum/exposure-report/README.md
|
||||
- `btc/antete.mjs` cited in: aere-quantum/exposure-report/README.md
|
||||
- `data/audit.log` cited in: aere-quantum/pq-kms/README.md
|
||||
- `data/root-check.json` cited in: aere-quantum/pq-kms/README.md
|
||||
- `fixturi-cloud/deriva.mjs` cited in: aere-quantum/README.md
|
||||
- `libs.versions.toml` cited in: aere-quantum/crypto-inventory/README.md
|
||||
- `plic-aip23.json` cited in: aere-quantum/exposure-report/README.md
|
||||
- `proba-client-real.mjs` cited in: aere-quantum/readiness/README.md
|
||||
- `raport.json` cited in: aere-quantum/exposure-report/README.md
|
||||
- `raport.md` cited in: aere-quantum/exposure-report/README.md
|
||||
- `src/azure-cli/azure/cli/command_modules/vm/custom.py` cited in: aere-quantum/verify-layer/fixturi-cloud/README.md
|
||||
- `verify.mjs` cited in: aere-quantum/exposure-report/README.md
|
||||
- `wallet.json` cited in: aere-quantum/agents/x402/README.md
|
||||
|
||||
@ -11,7 +11,7 @@ notarization command of the verification layer and for the agents' x402 wallet (
|
||||
| [`pq-kms/`](pq-kms/) | a transit-style key management service where every key is hybrid: X25519 + ML-KEM-768 for encryption, Ed25519 + ML-DSA-65 for signatures (both halves required); versions, rotation, rewrap, data keys, a chained audit log; the root key from the environment or sealed by an HSM through PKCS#11 |
|
||||
| [`pq-pki/`](pq-pki/) | a private certificate authority for ML-DSA (X.509 v3, RFC 9881): root and issuing CAs, leaf certificates, revocation lists, and a strict chain verifier compared against OpenSSL |
|
||||
| [`crypto-inventory/`](crypto-inventory/) | a cryptographic inventory of source code (JavaScript/TypeScript, Python, Java, Kotlin, Swift, Go, Rust, PEM blocks, dependency manifests including Cargo.toml, Package.swift, Podfile and Gradle): every use classified by its exposure to a quantum computer, with a migration target, written as a CycloneDX 1.6 CBOM; nothing from the scanned tree is executed, and its cost stays linear on input built to be slow |
|
||||
| [`verify-layer/`](verify-layer/) | an audit-log sidecar for any deployment: entries are AIP-23 envelopes in a hash chain, the runtime adapter records every running Docker or Kubernetes container without any secret value, and the head of the chain can be signed by the operator (ML-DSA-65) and notarized on Aere Network under a post-quantum validator certificate; it says plainly what that proves (the history before a published head) and what it does not (that the host told the truth); the same log as a Merkle tree (RFC 9162): signed tree heads, and inclusion and consistency proofs of a few hashes that anyone checks without the log |
|
||||
| [`verify-layer/`](verify-layer/) | an audit-log sidecar for any deployment: entries are AIP-23 envelopes in a hash chain, the runtime adapter records every running Docker or Kubernetes container without any secret value, and from 2026-10-18 the same for what the operator's own cloud CLI exports (AWS ECS, EC2, Lambda; Azure VMs, Container Instances, Container Apps, Web Apps; GCP Compute Engine, Cloud Run), read from the export file and never from an account, and the head of the chain can be signed by the operator (ML-DSA-65) and notarized on Aere Network under a post-quantum validator certificate; it says plainly what that proves (the history before a published head) and what it does not (that the host told the truth); the same log as a Merkle tree (RFC 9162): signed tree heads, and inclusion and consistency proofs of a few hashes that anyone checks without the log |
|
||||
| [`proof-kinds/`](proof-kinds/) | the AIP-23 envelope builder the verification layer uses: fourteen proof kinds, one envelope format, digests instead of raw content |
|
||||
| [`readiness/`](readiness/) | the post-quantum readiness scanner of a public hostname: real TLS handshakes (hybrid only, hybrid preferred, TLS 1.2), HSTS, the certificate; no connection to an address not proven public; a rate limit per client that X-Forwarded-For cannot bypass |
|
||||
| [`control-plane/`](control-plane/) | from findings to a finished migration: a prioritized plan from the inventory and the scanner, its execution through the gateway, KMS and PKI with consent per action and a measured proof afterwards, recipes for the servers the products do not touch and a rescan that judges them, a compliance report against NIST IR 8547, the EU roadmap and optionally CNSA 2.0, and a console that checks it all again |
|
||||
@ -40,7 +40,7 @@ test, counts as a failure of the control. Results measured on 2026-09-29 (Node.j
|
||||
| pq-kms | 62/62 (`node test/proba.mjs`); HSM root on SoftHSM2 + OpenSC 20/20 (`pq-kms/test/proba-hsm.mjs`, Linux); sealed-file trust rules 7/7 (`pq-kms/test/proba-hsm-incredere.mjs`) | 16/16 (`node test/control-negativ.mjs`); sealed-file rules 2/2 in this repository (`pq-kms/test/control-negativ-hsm-incredere.mjs`) |
|
||||
| pq-pki | 27/27 (`node test/proba.mjs`), each verdict compared with OpenSSL 3.5 | 22/22 (`node test/control-negativ.mjs`) |
|
||||
| crypto-inventory | 68/68 (`node test/proba.mjs`, measured 2026-10-18 with the Rust, Swift and Kotlin detectors, glob imports, libcrux, BoringSSL, the libsignal Java/Node/Swift/Android APIs, CryptoKit, CommonCrypto, Security.framework, Android Keystore, Tink and OkHttp included); cost on hostile input 13/13 linear (`node test/proba-timp.mjs`) | 35/35 (`node test/control-negativ.mjs`); cost 5/5 in this repository (`node test/control-negativ-timp.mjs`; its fourth case compares with version 0.1.0 from the development history and is skipped here) |
|
||||
| verify-layer | 45/45 with the AIP-23 reference verifier, measured 2026-10-05 (`AERE_VERIFY_PROOF=<verify-proof.mjs from aere.network/tools> node proba-sidecar.mjs`); without it 40 run, 5 are reported as skipped and the exit code is 2; the Merkle tree 20/20 (`node proba-arbore.mjs`: the reference roots of Certificate Transparency, every proof up to 64 leaves, each attack), measured 2026-09-30 | 10/10 in this repository on 2026-10-05 (`node control-negativ-sidecar.mjs`; its eleventh case compares with the version from the development history and is skipped here); the tree 14/14 (`node control-negativ-arbore.mjs`) |
|
||||
| verify-layer | 45/45 with the AIP-23 reference verifier, measured 2026-10-05 (`AERE_VERIFY_PROOF=<verify-proof.mjs from aere.network/tools> node proba-sidecar.mjs`); without it 40 run, 5 are reported as skipped and the exit code is 2; the cloud adapters 60/60 on 2026-10-18 (`node proba-adaptoare-cloud.mjs`: nine fixtures derived from the vendors' documented CLI and REST examples by `fixturi-cloud/deriva.mjs`; a real account is unmeasured and the README says so); the Merkle tree 20/20 (`node proba-arbore.mjs`: the reference roots of Certificate Transparency, every proof up to 64 leaves, each attack), measured 2026-09-30 | 38/38 in this repository on 2026-10-18 (`node control-negativ-sidecar.mjs`: the ten original plantings plus the cloud adapter rules; the case that compares with the development history is skipped here); the tree 14/14 (`node control-negativ-arbore.mjs`) |
|
||||
| proof-kinds | 24/24 with the same verifier (`AERE_VERIFY_PROOF=... node proba-proof-kinds.mjs`) | six negative controls inside the test |
|
||||
| readiness | 6/6 (`node proba-adrese-private.mjs`: the private-address rules, and a local listener no scan may touch) | the rate limit and the queue bound are tested where the service runs, not here (its README says so) |
|
||||
| control-plane | planner 44/44 (2026-10-18: a key agreement or a client-side TLS configured by the application itself is not routed to the TLS gateway; a self-signed trust anchor is blocked, not "automatic through PKI"; test code is LOW with its own scope), command line 10/10, execution 30/30 on real products started locally, remediation 33/33 on real TLS servers (all five server profiles measured end to end on 2026-10-18: nginx, Apache, HAProxy, Node, Go), compliance report 30/30 (with the AIP-23 verifier; test-code findings are counted apart and are not "exposed today"), console 8/8; the console viewer in a real Chromium, phone and desktop, 26/26 (`node proba-consola-web.mjs`, measured 2026-09-30; needs `playwright-core` and a Chromium, otherwise it exits 2) | remediation 7/7, compliance report 3/3 in this repository; viewer 8/8 (`node control-negativ-consola-web.mjs`) |
|
||||
@ -62,4 +62,4 @@ interface, command line and data (`definePolicy`, `verifyLedger`, `approve`, ...
|
||||
|
||||
## Licence
|
||||
|
||||
MIT, see [LICENSE](LICENSE). Files: 904 (pq-gateway 9, pq-kms 10, pq-pki 6, crypto-inventory 73, verify-layer 12, proof-kinds 3, control-plane 27, agents 39, identity 24, proof-of-ai 3, ai-trust 6, verifiable-data 7, market-settlement 9, payments 8, conformance 631, device-identity 11, exposure-report 18, readiness 4).
|
||||
MIT, see [LICENSE](LICENSE). Files: 948 (pq-gateway 9, pq-kms 10, pq-pki 6, crypto-inventory 73, verify-layer 56, proof-kinds 3, control-plane 27, agents 39, identity 24, proof-of-ai 3, ai-trust 6, verifiable-data 7, market-settlement 9, payments 8, conformance 631, device-identity 11, exposure-report 18, readiness 4).
|
||||
|
||||
@ -38,6 +38,7 @@ head you hold from outside the host, with the signer you expect, never on its ow
|
||||
node sidecar.mjs record --kind deployment --name <name> --version <v> --content-file <file> [--host h] [--log p] [--at T]
|
||||
node sidecar.mjs record --kind proof --proof-file <envelope.json> # any AIP-23 envelope, after checking its form and hash
|
||||
node sidecar.mjs scan --source docker|kubernetes --input <export.json> [--host h] [--log p]
|
||||
node sidecar.mjs scan --source aws-ecs|aws-ec2|aws-lambda|azure-vm|azure-container|azure-containerapp|azure-webapp|gcp-compute|gcp-run --input <export.json> [--task-definitions <f>]
|
||||
node sidecar.mjs verify-log --log p [--attested head.json [--signer head.pub.pem]] # 0 intact (and continues the head), 1 broken or not continued
|
||||
node sidecar.mjs attest-head --log p [--host h] [--out head.json] [--sign-key head.key.pem] # the head as an aere-audit-head envelope
|
||||
node sidecar.mjs keygen --out <dir> # the operator's ML-DSA-65 head key (head.key.pem 0600, head.pub.pem)
|
||||
@ -69,6 +70,59 @@ container, or one that is not in the expected shape, is refused rather than reco
|
||||
A hash does not hide a guessable secret: if a password is passed on a command line, anyone who knows the rest of the command
|
||||
can test guesses against `commandSha256`. Pass secrets through files or the environment, not arguments.
|
||||
|
||||
## Cloud exports (2026-10-18)
|
||||
|
||||
The same adapter, in the same honest form, for the workloads a cloud runs for you: the operator makes the export **with the vendor's
|
||||
own CLI and their own credentials, on their own machine**; the sidecar reads the file. The sidecar holds no cloud credential and
|
||||
calls no cloud API. These adapters are measured on the outputs **as the vendors document them** (`fixturi-cloud/`, every file an exact
|
||||
copy of a documented example or, for GCP, a form built from the documented schema), **not on a live account**: Aere Network has no
|
||||
AWS, Azure or GCP account. What a live export carries beyond the documented example is handled as documented and is NOT MEASURED;
|
||||
a test account at each vendor is what it would take to measure it.
|
||||
|
||||
aws ecs describe-tasks --cluster C --tasks $(aws ecs list-tasks --cluster C --query 'taskArns' --output text) > tasks.json
|
||||
aws ecs describe-task-definition --task-definition <family:revision> > def.json # one per task definition in use
|
||||
node sidecar.mjs scan --source aws-ecs --input tasks.json --task-definitions def.json # def.json may hold one output or a JSON list of them
|
||||
aws ec2 describe-instances > ec2.json; node sidecar.mjs scan --source aws-ec2 --input ec2.json
|
||||
aws lambda list-functions > lambda.json; node sidecar.mjs scan --source aws-lambda --input lambda.json
|
||||
az vm list -d > vm.json; node sidecar.mjs scan --source azure-vm --input vm.json
|
||||
az container show -g G -n N > aci.json (collect several into a JSON array); node sidecar.mjs scan --source azure-container --input aci.json
|
||||
az containerapp list > aca.json; node sidecar.mjs scan --source azure-containerapp --input aca.json
|
||||
az webapp list --show-details > web.json; node sidecar.mjs scan --source azure-webapp --input web.json
|
||||
gcloud compute instances list --format=json > gce.json; node sidecar.mjs scan --source gcp-compute --input gce.json
|
||||
gcloud run services list --format=json > run.json; node sidecar.mjs scan --source gcp-run --input run.json
|
||||
|
||||
What each adapter reads, and what it refuses:
|
||||
|
||||
- **Only what the export says is running.** ECS: tasks and containers with `lastStatus` `RUNNING`; EC2: `State.Name` `running`;
|
||||
Azure VM: `powerState` `VM running` (the field `-d` adds; an export without it is refused, it does not say whether a machine runs);
|
||||
Container Instances: `containers[].instanceView.currentState.state` `Running` (`az container list` may omit `instanceView`; such an
|
||||
export is refused and `az container show` is asked for); Container Apps: `runningStatus` `Running` (`Progressing`, `Stopped`,
|
||||
`Suspended` and `Ready`, which the API enumerates without defining, do not count); App Service: `state` `Running`; Compute
|
||||
Engine: `status` `RUNNING`; Cloud Run: the `Ready` condition `True`. Lambda is the exception the vendor documents: `list-functions`
|
||||
does not return `State`, so every function listed is recorded as deployed with `state: not-in-export`; when the export carries
|
||||
`State` (from `get-function-configuration`), only `Active` functions enter.
|
||||
- **A file that is not the named CLI's output is refused by name** (`the input is not the output of \`aws ecs describe-tasks\``),
|
||||
as is an export with no running workload: a zero is not recorded.
|
||||
- **Identity.** The image with its digest when the export has one (`imageIdentity: digest`: an ECS `imageDigest`, an image given as
|
||||
`name@sha256:...` on Container Instances, Container Apps or Cloud Run); otherwise the id of the machine or service and the image or
|
||||
runtime the export declares, marked `imageIdentity: declared` (an AMI id, an Azure `imageReference`, a GCE boot disk and its
|
||||
licenses, a `DOCKER|image` or `NODE|20-lts` runtime); Lambda carries `CodeSha256`, the digest of its package (`codeSha256`). An
|
||||
entry's name is the region or zone and the workload's own identifiers (`ecs:cluster/task/container`, `ec2:region/instance`,
|
||||
`lambda:region/function`, `azvm:group/name`, `aci:group/name/container`, `aca:group/app/container`, `azwebapp:group/site`,
|
||||
`gce:zone/name`, `run:region/service/container`), and its version the digest when there is one.
|
||||
- **Names only, never values.** Environment variables enter as their names (ECS: `environment` and `secrets` of the task definition
|
||||
plus `overrides`; Lambda: the keys of `Environment.Variables`; Container Instances: `environmentVariables`, neither `value` nor
|
||||
`secureValue`; Container Apps: `env`, with `secretRef` names, never `configuration.secrets`; App Service: `appSettings` and
|
||||
`connectionStrings` names; Cloud Run: `env`, never `value` or `valueFrom`). EC2 tags, Azure tags, GCE labels and GCE metadata enter
|
||||
as keys (`startup-script`, `user-data`, `ssh-keys` live in metadata, with values the adapter never copies). `customData` and
|
||||
`userData` of a VM, the admin user, SSH keys, registry credentials, IP addresses and host names are **not copied at all**; an
|
||||
ECS secret's `valueFrom` ARN is not copied either. Where the export does not carry the names (ECS tasks without their task
|
||||
definition, a site listed without `--show-details`), the descriptor says so (`envSource: not-in-export`, `siteConfigInExport:
|
||||
false`) instead of pretending.
|
||||
|
||||
As with Docker and Kubernetes, an entry proves that the export *declared* the workload, at the time the operator says: the vendor's
|
||||
API answered the operator, and the operator handed the file to the sidecar. Nothing here checks the export against the vendor.
|
||||
|
||||
## Notarization
|
||||
|
||||
`notarize-head` reads the chain id from the RPC endpoint (it does not trust an argument), refuses an attestation whose
|
||||
@ -111,7 +165,8 @@ other, so both verify commands then say whether each head is signed and by which
|
||||
## Tests
|
||||
|
||||
node proba-sidecar.mjs # 45 checks
|
||||
node control-negativ-sidecar.mjs # puts each guard back to its absent form and requires the named check to fail
|
||||
node proba-adaptoare-cloud.mjs # 60: the nine cloud adapters on the documented exports (fixturi-cloud/)
|
||||
node control-negativ-sidecar.mjs # puts each guard back to its absent form and requires the named check to fail (11 + 27 cloud plantings)
|
||||
node proba-arbore.mjs # 20: the tree (the reference roots of Certificate Transparency for 1..8 leaves, every proof up to 64 leaves, each attack)
|
||||
node control-negativ-arbore.mjs # 14 guards removed in a copy, each turns its named test red
|
||||
|
||||
@ -133,6 +188,16 @@ comparison, the length check, the attestation hash check, the handling of an unr
|
||||
the head signature check, the comparison with `--signer`, the refusal of an unsigned head when `--signer` is given).
|
||||
`proba-notarizare-testnet.mjs --key-file <testnet key>` repeats the on-chain run above (9 checks, it needs a funded testnet key).
|
||||
|
||||
`proba-adaptoare-cloud.mjs` (2026-10-18) runs every cloud adapter on the documented export, on the same export with one stopped
|
||||
workload added, and on the same export with environment values planted (`fixturi-cloud/`, derived by `deriva.mjs` from the exact
|
||||
copies in `fixturi-cloud/surse/`, and compared with them at every run): it requires exactly the running workloads with their
|
||||
identities, no planted value anywhere in the log or the descriptors (and the names present, as the positive control), another CLI's
|
||||
export refused by name, every descriptor re-hashing to the digest in its envelope, and every envelope `VALID` for the reference
|
||||
verifier. `control-negativ-sidecar.mjs` adds three plantings per adapter (the running filter removed, the names replaced by the
|
||||
name/value pairs, the shape check removed) and requires each to turn its named check red: measured 38 of 38 on 2026-10-18. The
|
||||
adapters are producers, not verifiers, so they name no rule of the conformance suite (`conformance/`), whose rules are those of the
|
||||
log and tree verifiers, unchanged.
|
||||
|
||||
**Corrected on 2026-10-03.** Until then the check of a head's signature required the DECLARED scheme to be `ml-dsa-65` but not
|
||||
the key to be an ML-DSA-65 key: a head signed with an Ed25519, RSA or P-256 key that declared `ml-dsa-65` was reported as a head
|
||||
signed with ML-DSA-65. Found while this verifier was enrolled in the conformance suite (`conformance/`), where it is now a vector.
|
||||
@ -141,7 +206,6 @@ consistency check now also carries a rule id from a declared list (`REGULI` in `
|
||||
|
||||
## What it is not (yet)
|
||||
|
||||
It does not report to a live console over the network, and it has no per-cloud adapters that read deployments from the AWS,
|
||||
Azure or GCP APIs with credentials: the runtime adapter above, without credentials, is the first one. It signs heads, not
|
||||
each entry, and the host name in an entry is still a declaration. No third party
|
||||
has reviewed it.
|
||||
It does not report to a live console over the network. Its per-cloud adapters (2026-10-18) read the operator's CLI export: no
|
||||
credentials, no live API calls, and they are measured on the vendors' documented outputs, not on a live account (none is held).
|
||||
It signs heads, not each entry, and the host name in an entry is still a declaration. No third party has reviewed it.
|
||||
|
||||
@ -11,6 +11,14 @@
|
||||
// P7 semnatura capului nu se mai verifica (punctul 34, 2026-09-29) -> S CONTROL (semnatura stricata) rosu
|
||||
// P8 semnatarul capului nu se mai compara cu --signer -> S CONTROL (alta cheie) rosu
|
||||
// P9 un cap nesemnat trece cand --signer il cere semnat -> S CONTROL (nesemnat) rosu
|
||||
// P10 o cheie clasica sub schema ml-dsa-65 trece (2026-10-03) -> S CONTROL (cheie clasica) rosu
|
||||
// B15 (2026-10-18), adaptoarele pe furnizori de cloud, masurate cu proba-adaptoare-cloud.mjs pe aceeasi copie plantata, trei
|
||||
// plantari pe adaptor (9 adaptoare, 27 de plantari):
|
||||
// PR-<src> filtrul "ruleaza" scos: incarcatura OPRITA intra in jurnal -> "<src>: incarcatura OPRITA" rosu
|
||||
// PN-<src> numele variabilelor inlocuite cu perechile nume=valoare: valoarea ajunge in jurnal -> "<src>: CONFIDENTIALITATE" rosu
|
||||
// PF-<src> validarea formei scoasa: exportul altui CLI nu mai e refuzat PE NUME -> "<src>: CONTROL: export de alt CLI" rosu
|
||||
// Plantarile cloud ruleaza fara verificatorul AIP-23 (AERE_VERIFY_PROOF pe o cale inexistenta): verificarea de VALID nu e tinta lor si
|
||||
// ar dubla timpul; proba iese tot 1 cand are o verificare rosie.
|
||||
// Copiile stau LANGA original (importul lui proof-kinds e relativ) si se sterg; originalul trebuie sa ramana octet cu octet.
|
||||
// node control-negativ-sidecar.mjs -> 0 toate prinse, 1 una scapata, 2 STRICAT
|
||||
import crypto from 'node:crypto';
|
||||
@ -22,6 +30,7 @@ import { fileURLToPath } from 'node:url';
|
||||
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||
const SRC = path.join(AICI, 'sidecar.mjs');
|
||||
const PROBA = path.join(AICI, 'proba-sidecar.mjs');
|
||||
const PROBA_CLOUD = path.join(AICI, 'proba-adaptoare-cloud.mjs');
|
||||
const REV = process.env.AERE_SIDECAR_REV_VECHE || 'b2b08a5e';
|
||||
const sha = (f) => crypto.createHash('sha256').update(fs.readFileSync(f)).digest('hex');
|
||||
const inainte = sha(SRC);
|
||||
@ -39,22 +48,23 @@ const T = {
|
||||
nesemnat: 'S CONTROL: un cap nesemnat',
|
||||
cheieClasica: 'S CONTROL: un cap semnat cu o cheie clasica',
|
||||
};
|
||||
const SUMAR = { [PROBA]: /B3 sidecar \(verify layer\): \d+\/\d+ cum trebuia/, [PROBA_CLOUD]: /B15 adaptoare cloud: \d+\/\d+ cum trebuia/ };
|
||||
|
||||
function caz(id, text, tinte) {
|
||||
function caz(id, text, tinte, proba = PROBA, env = {}) {
|
||||
total++;
|
||||
const copie = path.join(AICI, `.plantat-sidecar-${id}.mjs`);
|
||||
try {
|
||||
fs.writeFileSync(copie, text);
|
||||
const r = spawnSync(process.execPath, [PROBA], { encoding: 'utf8', timeout: 400000, env: { ...process.env, AERE_SIDECAR_MODUL: copie } });
|
||||
const r = spawnSync(process.execPath, [proba], { encoding: 'utf8', timeout: 400000, env: { ...process.env, AERE_SIDECAR_MODUL: copie, ...env } });
|
||||
const out = (r.stdout || '') + (r.stderr || '');
|
||||
if (!/B3 sidecar \(verify layer\): \d+\/\d+ cum trebuia/.test(out) || !out.includes(copie)) { stricate++; console.log(` STRICAT ${id}: proba nu a ajuns la capat pe copie (${out.trim().split('\n').pop()?.slice(0, 140)})`); return; }
|
||||
if (!SUMAR[proba].test(out) || !out.includes(copie)) { stricate++; console.log(` STRICAT ${id}: proba nu a ajuns la capat pe copie (${out.trim().split('\n').pop()?.slice(0, 140)})`); return; }
|
||||
const rosii = out.split('\n').filter((l) => l.includes('[RAU ]'));
|
||||
const lipsa = tinte.filter((x) => !rosii.some((l) => l.includes(x)));
|
||||
if (r.status === 1 && !lipsa.length) { prinse++; console.log(` PRINS ${id}: ${rosii.length} verificari rosii, intre ele: ${tinte.map((t) => t.split(':')[0]).join(', ')}`); }
|
||||
else console.log(` SCAPAT ${id}: cod ${r.status}, au ramas verzi: ${lipsa.join(' | ') || '-'}`);
|
||||
} finally { fs.rmSync(copie, { force: true }); fs.rmSync(copie + '.lock', { force: true }); }
|
||||
}
|
||||
const planta = (t, a, b) => (t.split(a).length === 2 ? t.replace(a, b) : null);
|
||||
const planta = (t, a, b) => (t.split(a).length === 2 ? t.replace(a, () => b) : null);
|
||||
|
||||
const CALE = `${REV}:tools/aere-verify-layer/sidecar.mjs`;
|
||||
if (spawnSync('git', ['cat-file', '-e', CALE], { cwd: AICI }).status !== 0) console.log(` SARIT V0: revizia ${REV} nu e in istoricul acestui depozit; NEMASURAT aici`);
|
||||
@ -84,6 +94,36 @@ for (const [id, a, b, tinte] of P) {
|
||||
if (!t) { stricate++; total++; console.log(` STRICAT ${id}: ancora nu apare exact o data`); continue; }
|
||||
caz(id, t, tinte);
|
||||
}
|
||||
|
||||
// ---- B15: adaptoarele pe furnizori de cloud ---------------------------------------------------------------------------------------
|
||||
// scurgerea de nume -> valori: ancora e chiar apelul care reduce lista la nume, inlocuit cu lista intreaga (perechi nume/valoare)
|
||||
const SCURGERI = {
|
||||
'aws-ecs': ['numeDin([...(cd?.environment || []), ...(cd?.secrets || []), ...(over?.environment || [])] /*NUME:aws-ecs*/)', '[...(cd?.environment || []), ...(over?.environment || [])]'],
|
||||
'aws-ec2': ["numeDin(i.Tags, 'Key' /*NUME:aws-ec2*/)", '(i.Tags || [])'],
|
||||
'aws-lambda': ['Object.keys(f.Environment?.Variables || {}).sort() /*NUME:aws-lambda*/', '(f.Environment?.Variables || {})'],
|
||||
'azure-vm': ['tagKeys: Object.keys(v.tags || {}).sort() /*NUME:azure-vm*/,', 'tagKeys: v.tags || {}, customData: v.osProfile?.customData || null,'],
|
||||
'azure-container': ['numeDin(c.environmentVariables /*NUME:azure-container*/)', '(c.environmentVariables || [])'],
|
||||
'azure-containerapp': ['numeDin(c.env /*NUME:azure-containerapp*/)', '(c.env || [])'],
|
||||
'azure-webapp': ['numeDin(sc?.appSettings /*NUME:azure-webapp*/)', '(sc?.appSettings || [])'],
|
||||
'gcp-compute': ["numeDin(i.metadata?.items, 'key' /*NUME:gcp-compute*/)", '(i.metadata?.items || [])'],
|
||||
'gcp-run': ['numeDin(c.env /*NUME:gcp-run*/)', '(c.env || [])'],
|
||||
};
|
||||
const FARA_VERIFICATOR = { AERE_VERIFY_PROOF: path.join(AICI, 'nu-exista-verify-proof.mjs') };
|
||||
for (const src of Object.keys(SCURGERI)) {
|
||||
const PC = [
|
||||
[`PR-${src}`, `/*RULEAZA:${src}*/))`, `/*RULEAZA:${src}*/) && ${NU})`, [`${src}: incarcatura OPRITA`]],
|
||||
[`PN-${src}`, SCURGERI[src][0], SCURGERI[src][1], [`${src}: CONFIDENTIALITATE`]],
|
||||
[`PF-${src}`, `/*FORMA:${src}*/))`, `/*FORMA:${src}*/) && ${NU})`, [`${src}: CONTROL: export de alt CLI`]],
|
||||
];
|
||||
for (const [id, a, b, tinte] of PC) {
|
||||
let t = planta(nou, a, b);
|
||||
// ECS filtreaza pe doua niveluri (task si container), si un task STOPPED are si containerele STOPPED: filtrul scos inseamna
|
||||
// amandoua (masurat 2026-10-18: cu numai nivelul de task scos, plantarea era mascata de cel de container si SCAPA)
|
||||
if (t && id === 'PR-aws-ecs') t = planta(t, '/*RULEAZA:aws-ecs-container*/))', `/*RULEAZA:aws-ecs-container*/) && ${NU})`);
|
||||
if (!t) { stricate++; total++; console.log(` STRICAT ${id}: ancora nu apare exact o data`); continue; }
|
||||
caz(id, t, tinte, PROBA_CLOUD, FARA_VERIFICATOR);
|
||||
}
|
||||
}
|
||||
const ramase = fs.readdirSync(AICI).filter((f) => f.startsWith('.plantat-sidecar-'));
|
||||
if (sha(SRC) !== inainte || ramase.length) { stricate++; console.log(' STRICAT originalul s-a schimbat sau au ramas copii: ' + ramase.join(',')); }
|
||||
console.log(`\ncontrolul negativ al sidecar-ului: prinse ${prinse}/${total}, stricate ${stricate}`);
|
||||
|
||||
73
verify-layer/fixturi-cloud/README.md
Normal file
73
verify-layer/fixturi-cloud/README.md
Normal file
@ -0,0 +1,73 @@
|
||||
# Cloud export fixtures (B15, 2026-10-18)
|
||||
|
||||
The per-cloud adapters of `sidecar scan` are measured on these files, **not on a live account**: Aere Network holds no AWS, Azure or
|
||||
GCP account (a decision of the founder, about money), so what an adapter reads is the output of each CLI **as its vendor documents
|
||||
it**. Every file under `surse/` is an exact copy of an example published in that documentation, or, where the documentation
|
||||
publishes no example output, a form built from the documented schema and named `din-schema` (from the schema). Everything else in
|
||||
this directory is **derived** from those sources by `deriva.mjs`, deterministically; `node deriva.mjs --verifica` compares the files on
|
||||
disk with what the code derives now, and `proba-adaptoare-cloud.mjs` does the same at every run.
|
||||
|
||||
**NOT MEASURED: the output of a real account.** A field a CLI emits only on a live resource and not in its documented example (for
|
||||
example the `imageDigest` of an ECS container, the `instanceView` that `az container show` carries and `az container list` may not,
|
||||
the `State` that `aws lambda list-functions` does not return) is handled as the documentation describes it, and that handling has not
|
||||
been run against a live export. To measure it, a test account at each vendor is needed (a decision of the founder); until then every
|
||||
statement about these adapters is a statement about the documented shapes.
|
||||
|
||||
## Sources (`surse/`), read on 2026-10-18
|
||||
|
||||
| file | what it is | where it was read |
|
||||
| --- | --- | --- |
|
||||
| `aws-ecs-describe-tasks.json` | Example 1 of `aws ecs describe-tasks` ("To describe a single task"), copied exactly | docs.aws.amazon.com/cli/latest/reference/ecs/describe-tasks.html, page titled "AWS CLI 2.38.1 Command Reference" |
|
||||
| `aws-ecs-describe-task-definition.json` | the example output of `aws ecs describe-task-definition`, copied exactly (it carries a plaintext `MYSQL_ROOT_PASSWORD` value, the vendor's own example; the adapter drops it) | docs.aws.amazon.com/cli/latest/reference/ecs/describe-task-definition.html |
|
||||
| `aws-ec2-describe-instances.json` | Example 1 of `aws ec2 describe-instances`, copied exactly (including the vendor's `"PrivateIpAddress": "10-0-0-157"`) | docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html |
|
||||
| `aws-lambda-list-functions.json` | the example output of `aws lambda list-functions`, copied exactly; the page's note says `State` and `LastUpdateStatus` are not returned by this call | docs.aws.amazon.com/cli/latest/reference/lambda/list-functions.html |
|
||||
| `azure-vm-list-rest-2026-04-01.json` | `VirtualMachine_List_MaximumSet_Gen.json`, the example the REST reference "Virtual Machines - List" is generated from (api-version 2026-04-01), as published in Azure/azure-rest-api-specs | github.com/Azure/azure-rest-api-specs, `specification/compute/resource-manager/Microsoft.Compute/Compute/stable/2026-04-01/examples/virtualMachineExamples/` |
|
||||
| `azure-container-groups-list-rest-2026-07-01.json` | the sample response of "Container Groups - List" (api-version 2026-07-01), copied exactly | learn.microsoft.com/en-us/rest/api/container-instances/container-groups/list |
|
||||
| `azure-containerapps-list-rest-2026-07-01.json` | `ContainerApps_ListBySubscription.json` (api-version 2026-07-01), as published in Azure/azure-rest-api-specs | github.com/Azure/azure-rest-api-specs, `specification/app/resource-manager/Microsoft.App/ContainerApps/stable/2026-07-01/examples/` |
|
||||
| `azure-webapps-list-rest-2024-11-01.json` | the sample response of "Web Apps - List" (api-version 2024-11-01), copied exactly | learn.microsoft.com/en-us/rest/api/appservice/web-apps/list |
|
||||
| `gcp-compute-instances-din-schema.json` | **built from the schema**, not a published sample: the Compute Engine API has no example output for `gcloud compute instances list --format=json`; fields and the `status` values are those of the `Instance` resource (compute v1) | docs.cloud.google.com/compute/docs/reference/rest/v1/instances (schema as rendered in the generated client reference), docs.cloud.google.com/compute/docs/instances/instance-lifecycle (states), docs.cloud.google.com/compute/docs/metadata/predefined-metadata-keys |
|
||||
| `gcp-run-services-din-schema.json` | **built from the schema**, not a published sample: a `serving.knative.dev/v1` Service as the Cloud Run YAML reference and the Admin API v1 describe it (`cloud.googleapis.com/location` label, `status.conditions[].type == "Ready"`) | docs.cloud.google.com/run/docs/reference/yaml/v1 (last updated 2026-10-13), docs.cloud.google.com/run/docs/reference/rest/v1/namespaces.services, docs.cloud.google.com/run/docs/reference/rest/v1/Container |
|
||||
|
||||
How the CLI shapes relate to the REST samples (the derivation applies exactly this):
|
||||
|
||||
- `az vm list -d`: the Azure CLI returns the ARM resource with `properties` flattened into the object; `--show-details` adds
|
||||
`powerState` (the `displayStatus` of the `PowerState/*` entry of `instanceView.statuses`, so `"VM running"`), `publicIps`, `fqdns`,
|
||||
`privateIps`, `macAddresses`, and removes `instanceView` (read in `src/azure-cli/azure/cli/command_modules/vm/custom.py`,
|
||||
`get_vm_details`, github.com/Azure/azure-cli, branch dev, 2026-10-18). The REST sample has no power state, so the derived CLI
|
||||
form sets `powerState` itself.
|
||||
- `az container list` / `az container show`: `properties` flattened at the group and at each container; the state of a container is
|
||||
`containers[].instanceView.currentState.state` (the restart-policy guide reads it exactly so, page dated 2026-07-25). The REST
|
||||
list sample has no `instanceView`; the derived CLI form adds it in the shape `ContainerPropertiesInstanceView` documents.
|
||||
- `az containerapp list`: the containerapp extension returns the ARM resource with `properties` nested; `runningStatus` is read-only
|
||||
with values `Progressing`, `Running`, `Stopped`, `Suspended`, `Ready` (openapi.json 2026-07-01). The adapter counts only `Running`.
|
||||
- `az webapp list --show-details`: `properties` flattened; `state` is `Running` or `Stopped` (the command reference's own example is
|
||||
`az webapp list --query "[?state=='Running']"`, page dated 2026-09-01). The derived CLI form gives the first site a
|
||||
`linuxFxVersion` of the `DOCKER|image` form, which the REST sample leaves empty.
|
||||
- `gcloud ... --format=json` "lists the resource in json format" (gcloud topic formats, last updated 2026-10-06): the files are arrays
|
||||
of the resource.
|
||||
|
||||
## Derived files
|
||||
|
||||
For every source `<src>`: `<src>.json` (the CLI form), `<src>.oprita.json` (the same plus one workload that is **not running**: a
|
||||
STOPPED task, a stopped instance, an `Inactive` function, a deallocated VM, a `Terminated` container, a `Stopped` container app, a
|
||||
`Stopped` site, a `TERMINATED` instance, a service whose `Ready` condition is `False`), `<src>.secrete.json` (the same with
|
||||
environment variables **with values** planted, `AERE-SINTETIC-...`, synthetic by construction: in task definitions and overrides,
|
||||
`Environment.Variables`, VM `customData`/`userData`/tags, ACI `environmentVariables` (`value` and `secureValue`), container app `env`
|
||||
and `configuration.secrets`, site `appSettings`/`connectionStrings`, instance `metadata` (`user-data`, `startup-script`), Cloud Run `env`).
|
||||
`aws-ecs.definitii.json` is the task definition aligned to the task of the ECS example (the vendor's two examples do not share a task
|
||||
definition ARN); `azure-vm.fara-d.json` and `azure-container.fara-stare.json` are the exports **without** the field that says whether
|
||||
the workload runs, which the adapters refuse by name.
|
||||
|
||||
The test requires, for each adapter: the running workloads only (the planted stopped one never enters the log), the identities
|
||||
exactly, no planted value anywhere in the log or in the descriptors (and the variable **names** present, as the positive control),
|
||||
another CLI's export refused by name, every descriptor re-hashing to the digest in its envelope, and every envelope `VALID` for the
|
||||
AIP-23 reference verifier.
|
||||
|
||||
## Declared change to the Microsoft example (2026-10-18)
|
||||
|
||||
`surse/azure-webapps-list-rest-2024-11-01.json` is the published "Web Apps - List" example with ONE declared change: its four public IP
|
||||
addresses in `outboundIpAddresses` / `possibleOutboundIpAddresses` (Microsoft's, not ours, and not read by the adapter) are replaced with
|
||||
RFC 5737 documentation addresses (203.0.113.x, 198.51.100.x). Reason: this repository's publication gate refuses any file that lists three
|
||||
or more public IP addresses together (it cannot tell a vendor's example from an infrastructure map), and we keep that gate strict rather
|
||||
than give a folder an exception. Everything else in the source is byte for byte the published example; the derived fixtures carry the same
|
||||
replacement through `deriva.mjs`.
|
||||
154
verify-layer/fixturi-cloud/aws-ec2.json
Normal file
154
verify-layer/fixturi-cloud/aws-ec2.json
Normal file
@ -0,0 +1,154 @@
|
||||
{
|
||||
"Reservations": [
|
||||
{
|
||||
"Groups": [],
|
||||
"Instances": [
|
||||
{
|
||||
"AmiLaunchIndex": 0,
|
||||
"ImageId": "ami-0abcdef1234567890",
|
||||
"InstanceId": "i-1234567890abcdef0",
|
||||
"InstanceType": "t3.nano",
|
||||
"KeyName": "my-key-pair",
|
||||
"LaunchTime": "2022-11-15T10:48:59+00:00",
|
||||
"Monitoring": {
|
||||
"State": "disabled"
|
||||
},
|
||||
"Placement": {
|
||||
"AvailabilityZone": "us-east-2a",
|
||||
"GroupName": "",
|
||||
"Tenancy": "default"
|
||||
},
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"ProductCodes": [],
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIpAddress": "34.253.223.13",
|
||||
"State": {
|
||||
"Code": 16,
|
||||
"Name": "running"
|
||||
},
|
||||
"StateTransitionReason": "",
|
||||
"SubnetId": "subnet-04a636d18e83cfacb",
|
||||
"VpcId": "vpc-1234567890abcdef0",
|
||||
"Architecture": "x86_64",
|
||||
"BlockDeviceMappings": [
|
||||
{
|
||||
"DeviceName": "/dev/xvda",
|
||||
"Ebs": {
|
||||
"AttachTime": "2022-11-15T10:49:00+00:00",
|
||||
"DeleteOnTermination": true,
|
||||
"Status": "attached",
|
||||
"VolumeId": "vol-02e6ccdca7de29cf2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ClientToken": "1234abcd-1234-abcd-1234-d46a8903e9bc",
|
||||
"EbsOptimized": true,
|
||||
"EnaSupport": true,
|
||||
"Hypervisor": "xen",
|
||||
"IamInstanceProfile": {
|
||||
"Arn": "arn:aws:iam::111111111111:instance-profile/AmazonSSMRoleForInstancesQuickSetup",
|
||||
"Id": "111111111111111111111"
|
||||
},
|
||||
"NetworkInterfaces": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Attachment": {
|
||||
"AttachTime": "2022-11-15T10:48:59+00:00",
|
||||
"AttachmentId": "eni-attach-1234567890abcdefg",
|
||||
"DeleteOnTermination": true,
|
||||
"DeviceIndex": 0,
|
||||
"Status": "attached",
|
||||
"NetworkCardIndex": 0
|
||||
},
|
||||
"Description": "",
|
||||
"Groups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"Ipv6Addresses": [],
|
||||
"MacAddress": "00:11:22:33:44:55",
|
||||
"NetworkInterfaceId": "eni-1234567890abcdefg",
|
||||
"OwnerId": "104024344472",
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"PrivateIpAddresses": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Primary": true,
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Status": "in-use",
|
||||
"SubnetId": "subnet-1234567890abcdefg",
|
||||
"VpcId": "vpc-1234567890abcdefg",
|
||||
"InterfaceType": "interface"
|
||||
}
|
||||
],
|
||||
"RootDeviceName": "/dev/xvda",
|
||||
"RootDeviceType": "ebs",
|
||||
"SecurityGroups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Tags": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Value": "my-instance"
|
||||
}
|
||||
],
|
||||
"VirtualizationType": "hvm",
|
||||
"CpuOptions": {
|
||||
"CoreCount": 1,
|
||||
"ThreadsPerCore": 2
|
||||
},
|
||||
"CapacityReservationSpecification": {
|
||||
"CapacityReservationPreference": "open"
|
||||
},
|
||||
"HibernationOptions": {
|
||||
"Configured": false
|
||||
},
|
||||
"MetadataOptions": {
|
||||
"State": "applied",
|
||||
"HttpTokens": "optional",
|
||||
"HttpPutResponseHopLimit": 1,
|
||||
"HttpEndpoint": "enabled",
|
||||
"HttpProtocolIpv6": "disabled",
|
||||
"InstanceMetadataTags": "enabled"
|
||||
},
|
||||
"EnclaveOptions": {
|
||||
"Enabled": false
|
||||
},
|
||||
"PlatformDetails": "Linux/UNIX",
|
||||
"UsageOperation": "RunInstances",
|
||||
"UsageOperationUpdateTime": "2022-11-15T10:48:59+00:00",
|
||||
"PrivateDnsNameOptions": {
|
||||
"HostnameType": "ip-name",
|
||||
"EnableResourceNameDnsARecord": true,
|
||||
"EnableResourceNameDnsAAAARecord": false
|
||||
},
|
||||
"MaintenanceOptions": {
|
||||
"AutoRecovery": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"OwnerId": "111111111111",
|
||||
"ReservationId": "r-1234567890abcdefg"
|
||||
}
|
||||
]
|
||||
}
|
||||
297
verify-layer/fixturi-cloud/aws-ec2.oprita.json
Normal file
297
verify-layer/fixturi-cloud/aws-ec2.oprita.json
Normal file
@ -0,0 +1,297 @@
|
||||
{
|
||||
"Reservations": [
|
||||
{
|
||||
"Groups": [],
|
||||
"Instances": [
|
||||
{
|
||||
"AmiLaunchIndex": 0,
|
||||
"ImageId": "ami-0abcdef1234567890",
|
||||
"InstanceId": "i-1234567890abcdef0",
|
||||
"InstanceType": "t3.nano",
|
||||
"KeyName": "my-key-pair",
|
||||
"LaunchTime": "2022-11-15T10:48:59+00:00",
|
||||
"Monitoring": {
|
||||
"State": "disabled"
|
||||
},
|
||||
"Placement": {
|
||||
"AvailabilityZone": "us-east-2a",
|
||||
"GroupName": "",
|
||||
"Tenancy": "default"
|
||||
},
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"ProductCodes": [],
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIpAddress": "34.253.223.13",
|
||||
"State": {
|
||||
"Code": 16,
|
||||
"Name": "running"
|
||||
},
|
||||
"StateTransitionReason": "",
|
||||
"SubnetId": "subnet-04a636d18e83cfacb",
|
||||
"VpcId": "vpc-1234567890abcdef0",
|
||||
"Architecture": "x86_64",
|
||||
"BlockDeviceMappings": [
|
||||
{
|
||||
"DeviceName": "/dev/xvda",
|
||||
"Ebs": {
|
||||
"AttachTime": "2022-11-15T10:49:00+00:00",
|
||||
"DeleteOnTermination": true,
|
||||
"Status": "attached",
|
||||
"VolumeId": "vol-02e6ccdca7de29cf2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ClientToken": "1234abcd-1234-abcd-1234-d46a8903e9bc",
|
||||
"EbsOptimized": true,
|
||||
"EnaSupport": true,
|
||||
"Hypervisor": "xen",
|
||||
"IamInstanceProfile": {
|
||||
"Arn": "arn:aws:iam::111111111111:instance-profile/AmazonSSMRoleForInstancesQuickSetup",
|
||||
"Id": "111111111111111111111"
|
||||
},
|
||||
"NetworkInterfaces": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Attachment": {
|
||||
"AttachTime": "2022-11-15T10:48:59+00:00",
|
||||
"AttachmentId": "eni-attach-1234567890abcdefg",
|
||||
"DeleteOnTermination": true,
|
||||
"DeviceIndex": 0,
|
||||
"Status": "attached",
|
||||
"NetworkCardIndex": 0
|
||||
},
|
||||
"Description": "",
|
||||
"Groups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"Ipv6Addresses": [],
|
||||
"MacAddress": "00:11:22:33:44:55",
|
||||
"NetworkInterfaceId": "eni-1234567890abcdefg",
|
||||
"OwnerId": "104024344472",
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"PrivateIpAddresses": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Primary": true,
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Status": "in-use",
|
||||
"SubnetId": "subnet-1234567890abcdefg",
|
||||
"VpcId": "vpc-1234567890abcdefg",
|
||||
"InterfaceType": "interface"
|
||||
}
|
||||
],
|
||||
"RootDeviceName": "/dev/xvda",
|
||||
"RootDeviceType": "ebs",
|
||||
"SecurityGroups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Tags": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Value": "my-instance"
|
||||
}
|
||||
],
|
||||
"VirtualizationType": "hvm",
|
||||
"CpuOptions": {
|
||||
"CoreCount": 1,
|
||||
"ThreadsPerCore": 2
|
||||
},
|
||||
"CapacityReservationSpecification": {
|
||||
"CapacityReservationPreference": "open"
|
||||
},
|
||||
"HibernationOptions": {
|
||||
"Configured": false
|
||||
},
|
||||
"MetadataOptions": {
|
||||
"State": "applied",
|
||||
"HttpTokens": "optional",
|
||||
"HttpPutResponseHopLimit": 1,
|
||||
"HttpEndpoint": "enabled",
|
||||
"HttpProtocolIpv6": "disabled",
|
||||
"InstanceMetadataTags": "enabled"
|
||||
},
|
||||
"EnclaveOptions": {
|
||||
"Enabled": false
|
||||
},
|
||||
"PlatformDetails": "Linux/UNIX",
|
||||
"UsageOperation": "RunInstances",
|
||||
"UsageOperationUpdateTime": "2022-11-15T10:48:59+00:00",
|
||||
"PrivateDnsNameOptions": {
|
||||
"HostnameType": "ip-name",
|
||||
"EnableResourceNameDnsARecord": true,
|
||||
"EnableResourceNameDnsAAAARecord": false
|
||||
},
|
||||
"MaintenanceOptions": {
|
||||
"AutoRecovery": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"AmiLaunchIndex": 0,
|
||||
"ImageId": "ami-0abcdef1234567890",
|
||||
"InstanceId": "i-0000000000oprita00",
|
||||
"InstanceType": "t3.nano",
|
||||
"KeyName": "my-key-pair",
|
||||
"LaunchTime": "2022-11-15T10:48:59+00:00",
|
||||
"Monitoring": {
|
||||
"State": "disabled"
|
||||
},
|
||||
"Placement": {
|
||||
"AvailabilityZone": "us-east-2a",
|
||||
"GroupName": "",
|
||||
"Tenancy": "default"
|
||||
},
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"ProductCodes": [],
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIpAddress": "34.253.223.13",
|
||||
"State": {
|
||||
"Code": 80,
|
||||
"Name": "stopped"
|
||||
},
|
||||
"StateTransitionReason": "User initiated (2026-10-17 20:00:00 GMT)",
|
||||
"SubnetId": "subnet-04a636d18e83cfacb",
|
||||
"VpcId": "vpc-1234567890abcdef0",
|
||||
"Architecture": "x86_64",
|
||||
"BlockDeviceMappings": [
|
||||
{
|
||||
"DeviceName": "/dev/xvda",
|
||||
"Ebs": {
|
||||
"AttachTime": "2022-11-15T10:49:00+00:00",
|
||||
"DeleteOnTermination": true,
|
||||
"Status": "attached",
|
||||
"VolumeId": "vol-02e6ccdca7de29cf2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ClientToken": "1234abcd-1234-abcd-1234-d46a8903e9bc",
|
||||
"EbsOptimized": true,
|
||||
"EnaSupport": true,
|
||||
"Hypervisor": "xen",
|
||||
"IamInstanceProfile": {
|
||||
"Arn": "arn:aws:iam::111111111111:instance-profile/AmazonSSMRoleForInstancesQuickSetup",
|
||||
"Id": "111111111111111111111"
|
||||
},
|
||||
"NetworkInterfaces": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Attachment": {
|
||||
"AttachTime": "2022-11-15T10:48:59+00:00",
|
||||
"AttachmentId": "eni-attach-1234567890abcdefg",
|
||||
"DeleteOnTermination": true,
|
||||
"DeviceIndex": 0,
|
||||
"Status": "attached",
|
||||
"NetworkCardIndex": 0
|
||||
},
|
||||
"Description": "",
|
||||
"Groups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"Ipv6Addresses": [],
|
||||
"MacAddress": "00:11:22:33:44:55",
|
||||
"NetworkInterfaceId": "eni-1234567890abcdefg",
|
||||
"OwnerId": "104024344472",
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"PrivateIpAddresses": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Primary": true,
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Status": "in-use",
|
||||
"SubnetId": "subnet-1234567890abcdefg",
|
||||
"VpcId": "vpc-1234567890abcdefg",
|
||||
"InterfaceType": "interface"
|
||||
}
|
||||
],
|
||||
"RootDeviceName": "/dev/xvda",
|
||||
"RootDeviceType": "ebs",
|
||||
"SecurityGroups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Tags": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Value": "my-instance"
|
||||
}
|
||||
],
|
||||
"VirtualizationType": "hvm",
|
||||
"CpuOptions": {
|
||||
"CoreCount": 1,
|
||||
"ThreadsPerCore": 2
|
||||
},
|
||||
"CapacityReservationSpecification": {
|
||||
"CapacityReservationPreference": "open"
|
||||
},
|
||||
"HibernationOptions": {
|
||||
"Configured": false
|
||||
},
|
||||
"MetadataOptions": {
|
||||
"State": "applied",
|
||||
"HttpTokens": "optional",
|
||||
"HttpPutResponseHopLimit": 1,
|
||||
"HttpEndpoint": "enabled",
|
||||
"HttpProtocolIpv6": "disabled",
|
||||
"InstanceMetadataTags": "enabled"
|
||||
},
|
||||
"EnclaveOptions": {
|
||||
"Enabled": false
|
||||
},
|
||||
"PlatformDetails": "Linux/UNIX",
|
||||
"UsageOperation": "RunInstances",
|
||||
"UsageOperationUpdateTime": "2022-11-15T10:48:59+00:00",
|
||||
"PrivateDnsNameOptions": {
|
||||
"HostnameType": "ip-name",
|
||||
"EnableResourceNameDnsARecord": true,
|
||||
"EnableResourceNameDnsAAAARecord": false
|
||||
},
|
||||
"MaintenanceOptions": {
|
||||
"AutoRecovery": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"OwnerId": "111111111111",
|
||||
"ReservationId": "r-1234567890abcdefg"
|
||||
}
|
||||
]
|
||||
}
|
||||
158
verify-layer/fixturi-cloud/aws-ec2.secrete.json
Normal file
158
verify-layer/fixturi-cloud/aws-ec2.secrete.json
Normal file
@ -0,0 +1,158 @@
|
||||
{
|
||||
"Reservations": [
|
||||
{
|
||||
"Groups": [],
|
||||
"Instances": [
|
||||
{
|
||||
"AmiLaunchIndex": 0,
|
||||
"ImageId": "ami-0abcdef1234567890",
|
||||
"InstanceId": "i-1234567890abcdef0",
|
||||
"InstanceType": "t3.nano",
|
||||
"KeyName": "my-key-pair",
|
||||
"LaunchTime": "2022-11-15T10:48:59+00:00",
|
||||
"Monitoring": {
|
||||
"State": "disabled"
|
||||
},
|
||||
"Placement": {
|
||||
"AvailabilityZone": "us-east-2a",
|
||||
"GroupName": "",
|
||||
"Tenancy": "default"
|
||||
},
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"ProductCodes": [],
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIpAddress": "34.253.223.13",
|
||||
"State": {
|
||||
"Code": 16,
|
||||
"Name": "running"
|
||||
},
|
||||
"StateTransitionReason": "",
|
||||
"SubnetId": "subnet-04a636d18e83cfacb",
|
||||
"VpcId": "vpc-1234567890abcdef0",
|
||||
"Architecture": "x86_64",
|
||||
"BlockDeviceMappings": [
|
||||
{
|
||||
"DeviceName": "/dev/xvda",
|
||||
"Ebs": {
|
||||
"AttachTime": "2022-11-15T10:49:00+00:00",
|
||||
"DeleteOnTermination": true,
|
||||
"Status": "attached",
|
||||
"VolumeId": "vol-02e6ccdca7de29cf2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ClientToken": "1234abcd-1234-abcd-1234-d46a8903e9bc",
|
||||
"EbsOptimized": true,
|
||||
"EnaSupport": true,
|
||||
"Hypervisor": "xen",
|
||||
"IamInstanceProfile": {
|
||||
"Arn": "arn:aws:iam::111111111111:instance-profile/AmazonSSMRoleForInstancesQuickSetup",
|
||||
"Id": "111111111111111111111"
|
||||
},
|
||||
"NetworkInterfaces": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Attachment": {
|
||||
"AttachTime": "2022-11-15T10:48:59+00:00",
|
||||
"AttachmentId": "eni-attach-1234567890abcdefg",
|
||||
"DeleteOnTermination": true,
|
||||
"DeviceIndex": 0,
|
||||
"Status": "attached",
|
||||
"NetworkCardIndex": 0
|
||||
},
|
||||
"Description": "",
|
||||
"Groups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"Ipv6Addresses": [],
|
||||
"MacAddress": "00:11:22:33:44:55",
|
||||
"NetworkInterfaceId": "eni-1234567890abcdefg",
|
||||
"OwnerId": "104024344472",
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"PrivateIpAddresses": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Primary": true,
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Status": "in-use",
|
||||
"SubnetId": "subnet-1234567890abcdefg",
|
||||
"VpcId": "vpc-1234567890abcdefg",
|
||||
"InterfaceType": "interface"
|
||||
}
|
||||
],
|
||||
"RootDeviceName": "/dev/xvda",
|
||||
"RootDeviceType": "ebs",
|
||||
"SecurityGroups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Tags": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Value": "my-instance"
|
||||
},
|
||||
{
|
||||
"Key": "DB_PASSWORD",
|
||||
"Value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
],
|
||||
"VirtualizationType": "hvm",
|
||||
"CpuOptions": {
|
||||
"CoreCount": 1,
|
||||
"ThreadsPerCore": 2
|
||||
},
|
||||
"CapacityReservationSpecification": {
|
||||
"CapacityReservationPreference": "open"
|
||||
},
|
||||
"HibernationOptions": {
|
||||
"Configured": false
|
||||
},
|
||||
"MetadataOptions": {
|
||||
"State": "applied",
|
||||
"HttpTokens": "optional",
|
||||
"HttpPutResponseHopLimit": 1,
|
||||
"HttpEndpoint": "enabled",
|
||||
"HttpProtocolIpv6": "disabled",
|
||||
"InstanceMetadataTags": "enabled"
|
||||
},
|
||||
"EnclaveOptions": {
|
||||
"Enabled": false
|
||||
},
|
||||
"PlatformDetails": "Linux/UNIX",
|
||||
"UsageOperation": "RunInstances",
|
||||
"UsageOperationUpdateTime": "2022-11-15T10:48:59+00:00",
|
||||
"PrivateDnsNameOptions": {
|
||||
"HostnameType": "ip-name",
|
||||
"EnableResourceNameDnsARecord": true,
|
||||
"EnableResourceNameDnsAAAARecord": false
|
||||
},
|
||||
"MaintenanceOptions": {
|
||||
"AutoRecovery": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"OwnerId": "111111111111",
|
||||
"ReservationId": "r-1234567890abcdefg"
|
||||
}
|
||||
]
|
||||
}
|
||||
54
verify-layer/fixturi-cloud/aws-ecs.definitii.json
Normal file
54
verify-layer/fixturi-cloud/aws-ecs.definitii.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"taskDefinition": {
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"containerDefinitions": [
|
||||
{
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"cpu": 10,
|
||||
"memory": 300,
|
||||
"essential": true,
|
||||
"command": [
|
||||
"httpd-foreground"
|
||||
],
|
||||
"environment": [
|
||||
{
|
||||
"name": "HTTPD_PORT",
|
||||
"value": "80"
|
||||
}
|
||||
],
|
||||
"secrets": [
|
||||
{
|
||||
"name": "API_TOKEN",
|
||||
"valueFrom": "arn:aws:secretsmanager:us-east-1:123456789012:secret:api-token-AbCdEf"
|
||||
}
|
||||
],
|
||||
"mountPoints": [
|
||||
{
|
||||
"sourceVolume": "www",
|
||||
"containerPath": "/usr/local/apache2/htdocs",
|
||||
"readOnly": true
|
||||
}
|
||||
],
|
||||
"portMappings": [
|
||||
{
|
||||
"containerPort": 80,
|
||||
"hostPort": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"family": "console-sample-app-static2",
|
||||
"revision": 1,
|
||||
"volumes": [],
|
||||
"status": "ACTIVE",
|
||||
"placementConstraints": [],
|
||||
"compatibilities": [
|
||||
"EXTERNAL",
|
||||
"EC2"
|
||||
],
|
||||
"registeredAt": "2024-06-21T11:15:12.669000-05:00",
|
||||
"registeredBy": "arn:aws:sts::012345678910:assumed-role/demo-role/jane-doe"
|
||||
},
|
||||
"tags": []
|
||||
}
|
||||
66
verify-layer/fixturi-cloud/aws-ecs.json
Normal file
66
verify-layer/fixturi-cloud/aws-ecs.json
Normal file
@ -0,0 +1,66 @@
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"attachments": [],
|
||||
"attributes": [
|
||||
{
|
||||
"name": "ecs.cpu-architecture",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"availabilityZone": "us-east-1b",
|
||||
"clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
|
||||
"connectivity": "CONNECTED",
|
||||
"connectivityAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/test/025c7e2c5e054a6790a29fc1fEXAMPLE",
|
||||
"containers": [
|
||||
{
|
||||
"containerArn": "arn:aws:ecs:us-east-1:123456789012:container/MyCluster/4d590253bb114126b7afa7b58eea9221/a992d1cc-ea46-474a-b6e8-24688EXAMPLE",
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58EXAMPLE",
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"runtimeId": "91251eed27db90006ad67b1a08187290869f216557717dd5c39b37c94EXAMPLE",
|
||||
"lastStatus": "RUNNING",
|
||||
"networkBindings": [
|
||||
{
|
||||
"bindIP": "0.0.0.0",
|
||||
"containerPort": 80,
|
||||
"hostPort": 80,
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"networkInterfaces": [],
|
||||
"healthStatus": "UNKNOWN",
|
||||
"cpu": "10",
|
||||
"memory": "300"
|
||||
}
|
||||
],
|
||||
"cpu": "10",
|
||||
"createdAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"desiredStatus": "RUNNING",
|
||||
"enableExecuteCommand": false,
|
||||
"group": "service:testupdate",
|
||||
"healthStatus": "UNKNOWN",
|
||||
"lastStatus": "RUNNING",
|
||||
"launchType": "EC2",
|
||||
"memory": "300",
|
||||
"overrides": {
|
||||
"containerOverrides": [
|
||||
{
|
||||
"name": "simple-app"
|
||||
}
|
||||
],
|
||||
"inferenceAcceleratorOverrides": []
|
||||
},
|
||||
"pullStartedAt": "2021-08-11T12:21:28.234000-04:00",
|
||||
"pullStoppedAt": "2021-08-11T12:21:33.793000-04:00",
|
||||
"startedAt": "2021-08-11T12:21:34.945000-04:00",
|
||||
"startedBy": "ecs-svc/968695068243EXAMPLE",
|
||||
"tags": [],
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58eea9221",
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"version": 2
|
||||
}
|
||||
],
|
||||
"failures": []
|
||||
}
|
||||
129
verify-layer/fixturi-cloud/aws-ecs.oprita.json
Normal file
129
verify-layer/fixturi-cloud/aws-ecs.oprita.json
Normal file
@ -0,0 +1,129 @@
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"attachments": [],
|
||||
"attributes": [
|
||||
{
|
||||
"name": "ecs.cpu-architecture",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"availabilityZone": "us-east-1b",
|
||||
"clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
|
||||
"connectivity": "CONNECTED",
|
||||
"connectivityAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/test/025c7e2c5e054a6790a29fc1fEXAMPLE",
|
||||
"containers": [
|
||||
{
|
||||
"containerArn": "arn:aws:ecs:us-east-1:123456789012:container/MyCluster/4d590253bb114126b7afa7b58eea9221/a992d1cc-ea46-474a-b6e8-24688EXAMPLE",
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58EXAMPLE",
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"runtimeId": "91251eed27db90006ad67b1a08187290869f216557717dd5c39b37c94EXAMPLE",
|
||||
"lastStatus": "RUNNING",
|
||||
"networkBindings": [
|
||||
{
|
||||
"bindIP": "0.0.0.0",
|
||||
"containerPort": 80,
|
||||
"hostPort": 80,
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"networkInterfaces": [],
|
||||
"healthStatus": "UNKNOWN",
|
||||
"cpu": "10",
|
||||
"memory": "300"
|
||||
}
|
||||
],
|
||||
"cpu": "10",
|
||||
"createdAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"desiredStatus": "RUNNING",
|
||||
"enableExecuteCommand": false,
|
||||
"group": "service:testupdate",
|
||||
"healthStatus": "UNKNOWN",
|
||||
"lastStatus": "RUNNING",
|
||||
"launchType": "EC2",
|
||||
"memory": "300",
|
||||
"overrides": {
|
||||
"containerOverrides": [
|
||||
{
|
||||
"name": "simple-app"
|
||||
}
|
||||
],
|
||||
"inferenceAcceleratorOverrides": []
|
||||
},
|
||||
"pullStartedAt": "2021-08-11T12:21:28.234000-04:00",
|
||||
"pullStoppedAt": "2021-08-11T12:21:33.793000-04:00",
|
||||
"startedAt": "2021-08-11T12:21:34.945000-04:00",
|
||||
"startedBy": "ecs-svc/968695068243EXAMPLE",
|
||||
"tags": [],
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58eea9221",
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"version": 2
|
||||
},
|
||||
{
|
||||
"attachments": [],
|
||||
"attributes": [
|
||||
{
|
||||
"name": "ecs.cpu-architecture",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"availabilityZone": "us-east-1b",
|
||||
"clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
|
||||
"connectivity": "CONNECTED",
|
||||
"connectivityAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/test/025c7e2c5e054a6790a29fc1fEXAMPLE",
|
||||
"containers": [
|
||||
{
|
||||
"containerArn": "arn:aws:ecs:us-east-1:123456789012:container/MyCluster/4d590253bb114126b7afa7b58eea9221/a992d1cc-ea46-474a-b6e8-24688EXAMPLE",
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58EXAMPLE",
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"runtimeId": "91251eed27db90006ad67b1a08187290869f216557717dd5c39b37c94EXAMPLE",
|
||||
"lastStatus": "STOPPED",
|
||||
"networkBindings": [
|
||||
{
|
||||
"bindIP": "0.0.0.0",
|
||||
"containerPort": 80,
|
||||
"hostPort": 80,
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"networkInterfaces": [],
|
||||
"healthStatus": "UNKNOWN",
|
||||
"cpu": "10",
|
||||
"memory": "300",
|
||||
"exitCode": 0
|
||||
}
|
||||
],
|
||||
"cpu": "10",
|
||||
"createdAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"desiredStatus": "STOPPED",
|
||||
"enableExecuteCommand": false,
|
||||
"group": "service:testupdate",
|
||||
"healthStatus": "UNKNOWN",
|
||||
"lastStatus": "STOPPED",
|
||||
"launchType": "EC2",
|
||||
"memory": "300",
|
||||
"overrides": {
|
||||
"containerOverrides": [
|
||||
{
|
||||
"name": "simple-app"
|
||||
}
|
||||
],
|
||||
"inferenceAcceleratorOverrides": []
|
||||
},
|
||||
"pullStartedAt": "2021-08-11T12:21:28.234000-04:00",
|
||||
"pullStoppedAt": "2021-08-11T12:21:33.793000-04:00",
|
||||
"startedAt": "2021-08-11T12:21:34.945000-04:00",
|
||||
"startedBy": "ecs-svc/968695068243EXAMPLE",
|
||||
"tags": [],
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/0000000000000000000000oprita",
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"version": 2,
|
||||
"stoppedReason": "Essential container in task exited"
|
||||
}
|
||||
],
|
||||
"failures": []
|
||||
}
|
||||
58
verify-layer/fixturi-cloud/aws-ecs.secrete.definitii.json
Normal file
58
verify-layer/fixturi-cloud/aws-ecs.secrete.definitii.json
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"taskDefinition": {
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"containerDefinitions": [
|
||||
{
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"cpu": 10,
|
||||
"memory": 300,
|
||||
"essential": true,
|
||||
"command": [
|
||||
"httpd-foreground"
|
||||
],
|
||||
"environment": [
|
||||
{
|
||||
"name": "HTTPD_PORT",
|
||||
"value": "80"
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
],
|
||||
"secrets": [
|
||||
{
|
||||
"name": "API_TOKEN",
|
||||
"valueFrom": "arn:aws:secretsmanager:us-east-1:123456789012:secret:api-token-AbCdEf"
|
||||
}
|
||||
],
|
||||
"mountPoints": [
|
||||
{
|
||||
"sourceVolume": "www",
|
||||
"containerPath": "/usr/local/apache2/htdocs",
|
||||
"readOnly": true
|
||||
}
|
||||
],
|
||||
"portMappings": [
|
||||
{
|
||||
"containerPort": 80,
|
||||
"hostPort": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"family": "console-sample-app-static2",
|
||||
"revision": 1,
|
||||
"volumes": [],
|
||||
"status": "ACTIVE",
|
||||
"placementConstraints": [],
|
||||
"compatibilities": [
|
||||
"EXTERNAL",
|
||||
"EC2"
|
||||
],
|
||||
"registeredAt": "2024-06-21T11:15:12.669000-05:00",
|
||||
"registeredBy": "arn:aws:sts::012345678910:assumed-role/demo-role/jane-doe"
|
||||
},
|
||||
"tags": []
|
||||
}
|
||||
72
verify-layer/fixturi-cloud/aws-ecs.secrete.json
Normal file
72
verify-layer/fixturi-cloud/aws-ecs.secrete.json
Normal file
@ -0,0 +1,72 @@
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"attachments": [],
|
||||
"attributes": [
|
||||
{
|
||||
"name": "ecs.cpu-architecture",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"availabilityZone": "us-east-1b",
|
||||
"clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
|
||||
"connectivity": "CONNECTED",
|
||||
"connectivityAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/test/025c7e2c5e054a6790a29fc1fEXAMPLE",
|
||||
"containers": [
|
||||
{
|
||||
"containerArn": "arn:aws:ecs:us-east-1:123456789012:container/MyCluster/4d590253bb114126b7afa7b58eea9221/a992d1cc-ea46-474a-b6e8-24688EXAMPLE",
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58EXAMPLE",
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"runtimeId": "91251eed27db90006ad67b1a08187290869f216557717dd5c39b37c94EXAMPLE",
|
||||
"lastStatus": "RUNNING",
|
||||
"networkBindings": [
|
||||
{
|
||||
"bindIP": "0.0.0.0",
|
||||
"containerPort": 80,
|
||||
"hostPort": 80,
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"networkInterfaces": [],
|
||||
"healthStatus": "UNKNOWN",
|
||||
"cpu": "10",
|
||||
"memory": "300"
|
||||
}
|
||||
],
|
||||
"cpu": "10",
|
||||
"createdAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"desiredStatus": "RUNNING",
|
||||
"enableExecuteCommand": false,
|
||||
"group": "service:testupdate",
|
||||
"healthStatus": "UNKNOWN",
|
||||
"lastStatus": "RUNNING",
|
||||
"launchType": "EC2",
|
||||
"memory": "300",
|
||||
"overrides": {
|
||||
"containerOverrides": [
|
||||
{
|
||||
"name": "simple-app",
|
||||
"environment": [
|
||||
{
|
||||
"name": "OVERRIDE_TOKEN",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"inferenceAcceleratorOverrides": []
|
||||
},
|
||||
"pullStartedAt": "2021-08-11T12:21:28.234000-04:00",
|
||||
"pullStoppedAt": "2021-08-11T12:21:33.793000-04:00",
|
||||
"startedAt": "2021-08-11T12:21:34.945000-04:00",
|
||||
"startedBy": "ecs-svc/968695068243EXAMPLE",
|
||||
"tags": [],
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58eea9221",
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"version": 2
|
||||
}
|
||||
],
|
||||
"failures": []
|
||||
}
|
||||
78
verify-layer/fixturi-cloud/aws-lambda.json
Normal file
78
verify-layer/fixturi-cloud/aws-lambda.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"Functions": [
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "dBG9m8SGdmlEjw/JYXlhhvCrAv5TxvXsbL/RMr0fT/I=",
|
||||
"FunctionName": "helloworld",
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "1718e831-badf-4253-9518-d0644210af7b",
|
||||
"CodeSize": 294,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:helloworld",
|
||||
"Handler": "helloworld.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-zgur6bf4",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-09-23T18:32:33.857+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "sU0cJ2/hOZevwV/lTxCuQqK3gDZP3i8gUoqUUVRmY6E=",
|
||||
"FunctionName": "my-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 256,
|
||||
"RevisionId": "93017fc9-59cb-41dc-901b-4845ce4bf668",
|
||||
"CodeSize": 266,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
|
||||
"Handler": "index.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/helloWorldPython-role-uy3l9qyq",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T16:47:28.490+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"Layers": [
|
||||
{
|
||||
"CodeSize": 41784542,
|
||||
"Arn": "arn:aws:lambda:us-west-2:420165488524:layer:AWSLambda-Python37-SciPy1x:2"
|
||||
},
|
||||
{
|
||||
"CodeSize": 4121,
|
||||
"Arn": "arn:aws:lambda:us-west-2:123456789012:layer:pythonLayer:1"
|
||||
}
|
||||
],
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "ZQukCqxtkqFgyF2cU41Avj99TKQ/hNihPtDtRcc08mI=",
|
||||
"FunctionName": "my-python-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "80b4eabc-acf7-4ea8-919a-e874c213707d",
|
||||
"CodeSize": 299,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-python-function",
|
||||
"Handler": "lambda_function.lambda_handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/my-python-function-role-z5g7dr6n",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T19:40:41.643+0000",
|
||||
"Runtime": "python3.11",
|
||||
"Description": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
98
verify-layer/fixturi-cloud/aws-lambda.oprita.json
Normal file
98
verify-layer/fixturi-cloud/aws-lambda.oprita.json
Normal file
@ -0,0 +1,98 @@
|
||||
{
|
||||
"Functions": [
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "dBG9m8SGdmlEjw/JYXlhhvCrAv5TxvXsbL/RMr0fT/I=",
|
||||
"FunctionName": "helloworld",
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "1718e831-badf-4253-9518-d0644210af7b",
|
||||
"CodeSize": 294,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:helloworld",
|
||||
"Handler": "helloworld.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-zgur6bf4",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-09-23T18:32:33.857+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "sU0cJ2/hOZevwV/lTxCuQqK3gDZP3i8gUoqUUVRmY6E=",
|
||||
"FunctionName": "my-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 256,
|
||||
"RevisionId": "93017fc9-59cb-41dc-901b-4845ce4bf668",
|
||||
"CodeSize": 266,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
|
||||
"Handler": "index.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/helloWorldPython-role-uy3l9qyq",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T16:47:28.490+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"Layers": [
|
||||
{
|
||||
"CodeSize": 41784542,
|
||||
"Arn": "arn:aws:lambda:us-west-2:420165488524:layer:AWSLambda-Python37-SciPy1x:2"
|
||||
},
|
||||
{
|
||||
"CodeSize": 4121,
|
||||
"Arn": "arn:aws:lambda:us-west-2:123456789012:layer:pythonLayer:1"
|
||||
}
|
||||
],
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "ZQukCqxtkqFgyF2cU41Avj99TKQ/hNihPtDtRcc08mI=",
|
||||
"FunctionName": "my-python-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "80b4eabc-acf7-4ea8-919a-e874c213707d",
|
||||
"CodeSize": 299,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-python-function",
|
||||
"Handler": "lambda_function.lambda_handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/my-python-function-role-z5g7dr6n",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T19:40:41.643+0000",
|
||||
"Runtime": "python3.11",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "dBG9m8SGdmlEjw/JYXlhhvCrAv5TxvXsbL/RMr0fT/I=",
|
||||
"FunctionName": "inactive-function",
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "1718e831-badf-4253-9518-d0644210af7b",
|
||||
"CodeSize": 294,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:inactive-function",
|
||||
"Handler": "helloworld.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-zgur6bf4",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-09-23T18:32:33.857+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": "",
|
||||
"State": "Inactive",
|
||||
"StateReason": "Function is inactive"
|
||||
}
|
||||
]
|
||||
}
|
||||
84
verify-layer/fixturi-cloud/aws-lambda.secrete.json
Normal file
84
verify-layer/fixturi-cloud/aws-lambda.secrete.json
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"Functions": [
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "dBG9m8SGdmlEjw/JYXlhhvCrAv5TxvXsbL/RMr0fT/I=",
|
||||
"FunctionName": "helloworld",
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "1718e831-badf-4253-9518-d0644210af7b",
|
||||
"CodeSize": 294,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:helloworld",
|
||||
"Handler": "helloworld.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-zgur6bf4",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-09-23T18:32:33.857+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": "",
|
||||
"Environment": {
|
||||
"Variables": {
|
||||
"DB_PASSWORD": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1",
|
||||
"LOG_LEVEL": "info"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "sU0cJ2/hOZevwV/lTxCuQqK3gDZP3i8gUoqUUVRmY6E=",
|
||||
"FunctionName": "my-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 256,
|
||||
"RevisionId": "93017fc9-59cb-41dc-901b-4845ce4bf668",
|
||||
"CodeSize": 266,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
|
||||
"Handler": "index.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/helloWorldPython-role-uy3l9qyq",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T16:47:28.490+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"Layers": [
|
||||
{
|
||||
"CodeSize": 41784542,
|
||||
"Arn": "arn:aws:lambda:us-west-2:420165488524:layer:AWSLambda-Python37-SciPy1x:2"
|
||||
},
|
||||
{
|
||||
"CodeSize": 4121,
|
||||
"Arn": "arn:aws:lambda:us-west-2:123456789012:layer:pythonLayer:1"
|
||||
}
|
||||
],
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "ZQukCqxtkqFgyF2cU41Avj99TKQ/hNihPtDtRcc08mI=",
|
||||
"FunctionName": "my-python-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "80b4eabc-acf7-4ea8-919a-e874c213707d",
|
||||
"CodeSize": 299,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-python-function",
|
||||
"Handler": "lambda_function.lambda_handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/my-python-function-role-z5g7dr6n",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T19:40:41.643+0000",
|
||||
"Runtime": "python3.11",
|
||||
"Description": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
66
verify-layer/fixturi-cloud/azure-container.fara-stare.json
Normal file
66
verify-layer/fixturi-cloud/azure-container.fara-stare.json
Normal file
@ -0,0 +1,66 @@
|
||||
[
|
||||
{
|
||||
"name": "demo1",
|
||||
"type": "Microsoft.ContainerInstance/containerGroups",
|
||||
"id": "/subscriptions/subid/resourceGroups/demo/providers/Microsoft.ContainerInstance/containerGroups/demo1",
|
||||
"location": "WestUs",
|
||||
"zones": [
|
||||
"1"
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"command": [],
|
||||
"environmentVariables": [],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"requests": {
|
||||
"cpu": 1,
|
||||
"memoryInGB": 1.5
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"mountPath": "/mnt/volume1",
|
||||
"readOnly": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"imageRegistryCredentials": [
|
||||
{
|
||||
"server": "azcloudconsoleregistry.azurecr.io",
|
||||
"username": "azcloudconsoleregistry"
|
||||
}
|
||||
],
|
||||
"ipAddress": {
|
||||
"type": "Public",
|
||||
"ip": "10.0.0.1",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80,
|
||||
"protocol": "TCP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"osType": "Linux",
|
||||
"provisioningState": "Succeeded",
|
||||
"volumes": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"azureFile": {
|
||||
"readOnly": false,
|
||||
"shareName": "share1",
|
||||
"storageAccountName": "storage1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"resourceGroup": "demo"
|
||||
}
|
||||
]
|
||||
79
verify-layer/fixturi-cloud/azure-container.json
Normal file
79
verify-layer/fixturi-cloud/azure-container.json
Normal file
@ -0,0 +1,79 @@
|
||||
[
|
||||
{
|
||||
"name": "demo1",
|
||||
"type": "Microsoft.ContainerInstance/containerGroups",
|
||||
"id": "/subscriptions/subid/resourceGroups/demo/providers/Microsoft.ContainerInstance/containerGroups/demo1",
|
||||
"location": "WestUs",
|
||||
"zones": [
|
||||
"1"
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"command": [],
|
||||
"environmentVariables": [],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"requests": {
|
||||
"cpu": 1,
|
||||
"memoryInGB": 1.5
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"mountPath": "/mnt/volume1",
|
||||
"readOnly": false
|
||||
}
|
||||
],
|
||||
"instanceView": {
|
||||
"currentState": {
|
||||
"state": "Running",
|
||||
"startTime": "2026-10-18T06:00:00Z",
|
||||
"detailStatus": ""
|
||||
},
|
||||
"events": [],
|
||||
"restartCount": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"imageRegistryCredentials": [
|
||||
{
|
||||
"server": "azcloudconsoleregistry.azurecr.io",
|
||||
"username": "azcloudconsoleregistry"
|
||||
}
|
||||
],
|
||||
"ipAddress": {
|
||||
"type": "Public",
|
||||
"ip": "10.0.0.1",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80,
|
||||
"protocol": "TCP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"osType": "Linux",
|
||||
"provisioningState": "Succeeded",
|
||||
"volumes": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"azureFile": {
|
||||
"readOnly": false,
|
||||
"shareName": "share1",
|
||||
"storageAccountName": "storage1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"resourceGroup": "demo",
|
||||
"instanceView": {
|
||||
"state": "Running",
|
||||
"events": []
|
||||
}
|
||||
}
|
||||
]
|
||||
158
verify-layer/fixturi-cloud/azure-container.oprita.json
Normal file
158
verify-layer/fixturi-cloud/azure-container.oprita.json
Normal file
@ -0,0 +1,158 @@
|
||||
[
|
||||
{
|
||||
"name": "demo1",
|
||||
"type": "Microsoft.ContainerInstance/containerGroups",
|
||||
"id": "/subscriptions/subid/resourceGroups/demo/providers/Microsoft.ContainerInstance/containerGroups/demo1",
|
||||
"location": "WestUs",
|
||||
"zones": [
|
||||
"1"
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"command": [],
|
||||
"environmentVariables": [],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"requests": {
|
||||
"cpu": 1,
|
||||
"memoryInGB": 1.5
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"mountPath": "/mnt/volume1",
|
||||
"readOnly": false
|
||||
}
|
||||
],
|
||||
"instanceView": {
|
||||
"currentState": {
|
||||
"state": "Running",
|
||||
"startTime": "2026-10-18T06:00:00Z",
|
||||
"detailStatus": ""
|
||||
},
|
||||
"events": [],
|
||||
"restartCount": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"imageRegistryCredentials": [
|
||||
{
|
||||
"server": "azcloudconsoleregistry.azurecr.io",
|
||||
"username": "azcloudconsoleregistry"
|
||||
}
|
||||
],
|
||||
"ipAddress": {
|
||||
"type": "Public",
|
||||
"ip": "10.0.0.1",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80,
|
||||
"protocol": "TCP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"osType": "Linux",
|
||||
"provisioningState": "Succeeded",
|
||||
"volumes": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"azureFile": {
|
||||
"readOnly": false,
|
||||
"shareName": "share1",
|
||||
"storageAccountName": "storage1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"resourceGroup": "demo",
|
||||
"instanceView": {
|
||||
"state": "Running",
|
||||
"events": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "demo2",
|
||||
"type": "Microsoft.ContainerInstance/containerGroups",
|
||||
"id": "/subscriptions/subid/resourceGroups/demo/providers/Microsoft.ContainerInstance/containerGroups/demo2",
|
||||
"location": "WestUs",
|
||||
"zones": [
|
||||
"1"
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"command": [],
|
||||
"environmentVariables": [],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"requests": {
|
||||
"cpu": 1,
|
||||
"memoryInGB": 1.5
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"mountPath": "/mnt/volume1",
|
||||
"readOnly": false
|
||||
}
|
||||
],
|
||||
"instanceView": {
|
||||
"currentState": {
|
||||
"state": "Terminated",
|
||||
"startTime": "2026-10-18T06:00:00Z",
|
||||
"detailStatus": "",
|
||||
"exitCode": 0,
|
||||
"finishTime": "2026-10-18T06:05:00Z"
|
||||
},
|
||||
"events": [],
|
||||
"restartCount": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"imageRegistryCredentials": [
|
||||
{
|
||||
"server": "azcloudconsoleregistry.azurecr.io",
|
||||
"username": "azcloudconsoleregistry"
|
||||
}
|
||||
],
|
||||
"ipAddress": {
|
||||
"type": "Public",
|
||||
"ip": "10.0.0.1",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80,
|
||||
"protocol": "TCP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"osType": "Linux",
|
||||
"provisioningState": "Succeeded",
|
||||
"volumes": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"azureFile": {
|
||||
"readOnly": false,
|
||||
"shareName": "share1",
|
||||
"storageAccountName": "storage1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"resourceGroup": "demo",
|
||||
"instanceView": {
|
||||
"state": "Stopped",
|
||||
"events": []
|
||||
}
|
||||
}
|
||||
]
|
||||
88
verify-layer/fixturi-cloud/azure-container.secrete.json
Normal file
88
verify-layer/fixturi-cloud/azure-container.secrete.json
Normal file
@ -0,0 +1,88 @@
|
||||
[
|
||||
{
|
||||
"name": "demo1",
|
||||
"type": "Microsoft.ContainerInstance/containerGroups",
|
||||
"id": "/subscriptions/subid/resourceGroups/demo/providers/Microsoft.ContainerInstance/containerGroups/demo1",
|
||||
"location": "WestUs",
|
||||
"zones": [
|
||||
"1"
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"command": [],
|
||||
"environmentVariables": [
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
},
|
||||
{
|
||||
"name": "API_KEY",
|
||||
"secureValue": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"requests": {
|
||||
"cpu": 1,
|
||||
"memoryInGB": 1.5
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"mountPath": "/mnt/volume1",
|
||||
"readOnly": false
|
||||
}
|
||||
],
|
||||
"instanceView": {
|
||||
"currentState": {
|
||||
"state": "Running",
|
||||
"startTime": "2026-10-18T06:00:00Z",
|
||||
"detailStatus": ""
|
||||
},
|
||||
"events": [],
|
||||
"restartCount": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"imageRegistryCredentials": [
|
||||
{
|
||||
"server": "azcloudconsoleregistry.azurecr.io",
|
||||
"username": "azcloudconsoleregistry"
|
||||
}
|
||||
],
|
||||
"ipAddress": {
|
||||
"type": "Public",
|
||||
"ip": "10.0.0.1",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80,
|
||||
"protocol": "TCP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"osType": "Linux",
|
||||
"provisioningState": "Succeeded",
|
||||
"volumes": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"azureFile": {
|
||||
"readOnly": false,
|
||||
"shareName": "share1",
|
||||
"storageAccountName": "storage1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"resourceGroup": "demo",
|
||||
"instanceView": {
|
||||
"state": "Running",
|
||||
"events": []
|
||||
}
|
||||
}
|
||||
]
|
||||
132
verify-layer/fixturi-cloud/azure-containerapp.json
Normal file
132
verify-layer/fixturi-cloud/azure-containerapp.json
Normal file
@ -0,0 +1,132 @@
|
||||
[
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"type": "Microsoft.App/containerApps",
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/testcontainerApp0",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"configuration": {
|
||||
"dapr": {
|
||||
"appHealth": {
|
||||
"path": "/health",
|
||||
"enabled": true,
|
||||
"probeIntervalSeconds": 3,
|
||||
"probeTimeoutMilliseconds": 1000,
|
||||
"threshold": 3
|
||||
},
|
||||
"appPort": 3000,
|
||||
"appProtocol": "http",
|
||||
"enableApiLogging": true,
|
||||
"enabled": true,
|
||||
"httpMaxRequestSize": 10,
|
||||
"httpReadBufferSize": 30,
|
||||
"logLevel": "debug"
|
||||
},
|
||||
"ingress": {
|
||||
"customDomains": [
|
||||
{
|
||||
"name": "www.my-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-name-dot-com"
|
||||
},
|
||||
{
|
||||
"name": "www.my--other-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-other-name-dot-com"
|
||||
}
|
||||
],
|
||||
"external": true,
|
||||
"fqdn": "testcontainerApp0.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"ipSecurityRestrictions": [
|
||||
{
|
||||
"name": "Allow work IP A subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/32"
|
||||
},
|
||||
{
|
||||
"name": "Allow work IP B subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/8"
|
||||
}
|
||||
],
|
||||
"stickySessions": {
|
||||
"affinity": "sticky"
|
||||
},
|
||||
"targetPort": 3000,
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "testcontainerApp0-ab1234"
|
||||
},
|
||||
{
|
||||
"label": "staging",
|
||||
"revisionName": "testcontainerApp0-ab4321"
|
||||
}
|
||||
],
|
||||
"transport": "auto"
|
||||
},
|
||||
"maxInactiveRevisions": 10,
|
||||
"runtime": {
|
||||
"java": {
|
||||
"enableMetrics": true
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"type": "redis"
|
||||
}
|
||||
},
|
||||
"eventStreamEndpoint": "testEndpoint",
|
||||
"latestReadyRevisionName": "testcontainerApp0-pjxhsye",
|
||||
"latestRevisionFqdn": "testcontainerApp0-pjxhsye.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"managedEnvironmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
|
||||
"provisioningState": "Succeeded",
|
||||
"runningStatus": "Running",
|
||||
"template": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"initContainers": [
|
||||
{
|
||||
"name": "testinitcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scale": {
|
||||
"cooldownPeriod": 350,
|
||||
"maxReplicas": 5,
|
||||
"minReplicas": 1,
|
||||
"pollingInterval": 35,
|
||||
"rules": [
|
||||
{
|
||||
"name": "httpscalingrule",
|
||||
"http": {
|
||||
"metadata": {
|
||||
"concurrentRequests": "50"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceBinds": [
|
||||
{
|
||||
"name": "service",
|
||||
"serviceId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/service"
|
||||
}
|
||||
]
|
||||
},
|
||||
"workloadProfileName": "My-GP-01"
|
||||
}
|
||||
}
|
||||
]
|
||||
262
verify-layer/fixturi-cloud/azure-containerapp.oprita.json
Normal file
262
verify-layer/fixturi-cloud/azure-containerapp.oprita.json
Normal file
@ -0,0 +1,262 @@
|
||||
[
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"type": "Microsoft.App/containerApps",
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/testcontainerApp0",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"configuration": {
|
||||
"dapr": {
|
||||
"appHealth": {
|
||||
"path": "/health",
|
||||
"enabled": true,
|
||||
"probeIntervalSeconds": 3,
|
||||
"probeTimeoutMilliseconds": 1000,
|
||||
"threshold": 3
|
||||
},
|
||||
"appPort": 3000,
|
||||
"appProtocol": "http",
|
||||
"enableApiLogging": true,
|
||||
"enabled": true,
|
||||
"httpMaxRequestSize": 10,
|
||||
"httpReadBufferSize": 30,
|
||||
"logLevel": "debug"
|
||||
},
|
||||
"ingress": {
|
||||
"customDomains": [
|
||||
{
|
||||
"name": "www.my-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-name-dot-com"
|
||||
},
|
||||
{
|
||||
"name": "www.my--other-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-other-name-dot-com"
|
||||
}
|
||||
],
|
||||
"external": true,
|
||||
"fqdn": "testcontainerApp0.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"ipSecurityRestrictions": [
|
||||
{
|
||||
"name": "Allow work IP A subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/32"
|
||||
},
|
||||
{
|
||||
"name": "Allow work IP B subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/8"
|
||||
}
|
||||
],
|
||||
"stickySessions": {
|
||||
"affinity": "sticky"
|
||||
},
|
||||
"targetPort": 3000,
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "testcontainerApp0-ab1234"
|
||||
},
|
||||
{
|
||||
"label": "staging",
|
||||
"revisionName": "testcontainerApp0-ab4321"
|
||||
}
|
||||
],
|
||||
"transport": "auto"
|
||||
},
|
||||
"maxInactiveRevisions": 10,
|
||||
"runtime": {
|
||||
"java": {
|
||||
"enableMetrics": true
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"type": "redis"
|
||||
}
|
||||
},
|
||||
"eventStreamEndpoint": "testEndpoint",
|
||||
"latestReadyRevisionName": "testcontainerApp0-pjxhsye",
|
||||
"latestRevisionFqdn": "testcontainerApp0-pjxhsye.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"managedEnvironmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
|
||||
"provisioningState": "Succeeded",
|
||||
"runningStatus": "Running",
|
||||
"template": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"initContainers": [
|
||||
{
|
||||
"name": "testinitcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scale": {
|
||||
"cooldownPeriod": 350,
|
||||
"maxReplicas": 5,
|
||||
"minReplicas": 1,
|
||||
"pollingInterval": 35,
|
||||
"rules": [
|
||||
{
|
||||
"name": "httpscalingrule",
|
||||
"http": {
|
||||
"metadata": {
|
||||
"concurrentRequests": "50"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceBinds": [
|
||||
{
|
||||
"name": "service",
|
||||
"serviceId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/service"
|
||||
}
|
||||
]
|
||||
},
|
||||
"workloadProfileName": "My-GP-01"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "testcontainerApp1",
|
||||
"type": "Microsoft.App/containerApps",
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/testcontainerApp1",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"configuration": {
|
||||
"dapr": {
|
||||
"appHealth": {
|
||||
"path": "/health",
|
||||
"enabled": true,
|
||||
"probeIntervalSeconds": 3,
|
||||
"probeTimeoutMilliseconds": 1000,
|
||||
"threshold": 3
|
||||
},
|
||||
"appPort": 3000,
|
||||
"appProtocol": "http",
|
||||
"enableApiLogging": true,
|
||||
"enabled": true,
|
||||
"httpMaxRequestSize": 10,
|
||||
"httpReadBufferSize": 30,
|
||||
"logLevel": "debug"
|
||||
},
|
||||
"ingress": {
|
||||
"customDomains": [
|
||||
{
|
||||
"name": "www.my-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-name-dot-com"
|
||||
},
|
||||
{
|
||||
"name": "www.my--other-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-other-name-dot-com"
|
||||
}
|
||||
],
|
||||
"external": true,
|
||||
"fqdn": "testcontainerApp0.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"ipSecurityRestrictions": [
|
||||
{
|
||||
"name": "Allow work IP A subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/32"
|
||||
},
|
||||
{
|
||||
"name": "Allow work IP B subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/8"
|
||||
}
|
||||
],
|
||||
"stickySessions": {
|
||||
"affinity": "sticky"
|
||||
},
|
||||
"targetPort": 3000,
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "testcontainerApp0-ab1234"
|
||||
},
|
||||
{
|
||||
"label": "staging",
|
||||
"revisionName": "testcontainerApp0-ab4321"
|
||||
}
|
||||
],
|
||||
"transport": "auto"
|
||||
},
|
||||
"maxInactiveRevisions": 10,
|
||||
"runtime": {
|
||||
"java": {
|
||||
"enableMetrics": true
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"type": "redis"
|
||||
}
|
||||
},
|
||||
"eventStreamEndpoint": "testEndpoint",
|
||||
"latestReadyRevisionName": "testcontainerApp0-pjxhsye",
|
||||
"latestRevisionFqdn": "testcontainerApp0-pjxhsye.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"managedEnvironmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
|
||||
"provisioningState": "Succeeded",
|
||||
"runningStatus": "Stopped",
|
||||
"template": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"initContainers": [
|
||||
{
|
||||
"name": "testinitcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scale": {
|
||||
"cooldownPeriod": 350,
|
||||
"maxReplicas": 5,
|
||||
"minReplicas": 1,
|
||||
"pollingInterval": 35,
|
||||
"rules": [
|
||||
{
|
||||
"name": "httpscalingrule",
|
||||
"http": {
|
||||
"metadata": {
|
||||
"concurrentRequests": "50"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceBinds": [
|
||||
{
|
||||
"name": "service",
|
||||
"serviceId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/service"
|
||||
}
|
||||
]
|
||||
},
|
||||
"workloadProfileName": "My-GP-01"
|
||||
}
|
||||
}
|
||||
]
|
||||
148
verify-layer/fixturi-cloud/azure-containerapp.secrete.json
Normal file
148
verify-layer/fixturi-cloud/azure-containerapp.secrete.json
Normal file
@ -0,0 +1,148 @@
|
||||
[
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"type": "Microsoft.App/containerApps",
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/testcontainerApp0",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"configuration": {
|
||||
"dapr": {
|
||||
"appHealth": {
|
||||
"path": "/health",
|
||||
"enabled": true,
|
||||
"probeIntervalSeconds": 3,
|
||||
"probeTimeoutMilliseconds": 1000,
|
||||
"threshold": 3
|
||||
},
|
||||
"appPort": 3000,
|
||||
"appProtocol": "http",
|
||||
"enableApiLogging": true,
|
||||
"enabled": true,
|
||||
"httpMaxRequestSize": 10,
|
||||
"httpReadBufferSize": 30,
|
||||
"logLevel": "debug"
|
||||
},
|
||||
"ingress": {
|
||||
"customDomains": [
|
||||
{
|
||||
"name": "www.my-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-name-dot-com"
|
||||
},
|
||||
{
|
||||
"name": "www.my--other-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-other-name-dot-com"
|
||||
}
|
||||
],
|
||||
"external": true,
|
||||
"fqdn": "testcontainerApp0.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"ipSecurityRestrictions": [
|
||||
{
|
||||
"name": "Allow work IP A subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/32"
|
||||
},
|
||||
{
|
||||
"name": "Allow work IP B subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/8"
|
||||
}
|
||||
],
|
||||
"stickySessions": {
|
||||
"affinity": "sticky"
|
||||
},
|
||||
"targetPort": 3000,
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "testcontainerApp0-ab1234"
|
||||
},
|
||||
{
|
||||
"label": "staging",
|
||||
"revisionName": "testcontainerApp0-ab4321"
|
||||
}
|
||||
],
|
||||
"transport": "auto"
|
||||
},
|
||||
"maxInactiveRevisions": 10,
|
||||
"runtime": {
|
||||
"java": {
|
||||
"enableMetrics": true
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"type": "redis"
|
||||
},
|
||||
"secrets": [
|
||||
{
|
||||
"name": "api-key",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"eventStreamEndpoint": "testEndpoint",
|
||||
"latestReadyRevisionName": "testcontainerApp0-pjxhsye",
|
||||
"latestRevisionFqdn": "testcontainerApp0-pjxhsye.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"managedEnvironmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
|
||||
"provisioningState": "Succeeded",
|
||||
"runningStatus": "Running",
|
||||
"template": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
},
|
||||
"env": [
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
},
|
||||
{
|
||||
"name": "API_KEY",
|
||||
"secretRef": "api-key"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"initContainers": [
|
||||
{
|
||||
"name": "testinitcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scale": {
|
||||
"cooldownPeriod": 350,
|
||||
"maxReplicas": 5,
|
||||
"minReplicas": 1,
|
||||
"pollingInterval": 35,
|
||||
"rules": [
|
||||
{
|
||||
"name": "httpscalingrule",
|
||||
"http": {
|
||||
"metadata": {
|
||||
"concurrentRequests": "50"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceBinds": [
|
||||
{
|
||||
"name": "service",
|
||||
"serviceId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/service"
|
||||
}
|
||||
]
|
||||
},
|
||||
"workloadProfileName": "My-GP-01"
|
||||
}
|
||||
}
|
||||
]
|
||||
917
verify-layer/fixturi-cloud/azure-vm.fara-d.json
Normal file
917
verify-layer/fixturi-cloud/azure-vm.fara-d.json
Normal file
@ -0,0 +1,917 @@
|
||||
[
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
},
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aaaaaaaaaaaaa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaa",
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"firstPartyServiceTagId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firstPartyServiceTags/{firstPartyServiceTagName}"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 8,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.683Z",
|
||||
"resourceGroup": "{resourceGroupName}"
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
},
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"id": "aaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"instanceView": {
|
||||
"platformUpdateDomain": 1,
|
||||
"platformFaultDomain": 29,
|
||||
"computerName": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"osName": "aaaaaaaaaaa",
|
||||
"osVersion": "aaaaaaaaaaaaaa",
|
||||
"hyperVGeneration": "V1",
|
||||
"rdpThumbPrint": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"vmAgent": {
|
||||
"vmAgentVersion": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"extensionHandlers": [
|
||||
{
|
||||
"type": "aaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaaaaaaaaa",
|
||||
"status": {
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceRedeployStatus": {
|
||||
"isCustomerInitiatedMaintenanceAllowed": true,
|
||||
"preMaintenanceWindowStartTime": "2022-01-14T16:43:41.682Z",
|
||||
"preMaintenanceWindowEndTime": "2022-01-14T16:43:41.682Z",
|
||||
"maintenanceWindowStartTime": "2022-01-14T16:43:41.682Z",
|
||||
"maintenanceWindowEndTime": "2022-01-14T16:43:41.682Z",
|
||||
"lastOperationResultCode": "None",
|
||||
"lastOperationMessage": "aa"
|
||||
},
|
||||
"disks": [
|
||||
{
|
||||
"name": "a",
|
||||
"encryptionSettings": [
|
||||
{
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"extensions": [
|
||||
{
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"vmHealth": {
|
||||
"status": {
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
},
|
||||
"bootDiagnostics": {
|
||||
"consoleScreenshotBlobUri": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"serialConsoleLogBlobUri": "aaaaaaaaaaaaaaaaaaa",
|
||||
"status": {
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
},
|
||||
"assignedHost": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"patchStatus": {
|
||||
"availablePatchSummary": {
|
||||
"status": "Unknown",
|
||||
"assessmentActivityId": "aaaaaaaaaaaaaaaaaaa",
|
||||
"rebootPending": true,
|
||||
"criticalAndSecurityPatchCount": 22,
|
||||
"otherPatchCount": 25,
|
||||
"startTime": "2022-01-14T16:43:41.682Z",
|
||||
"lastModifiedTime": "2022-01-14T16:43:41.683Z",
|
||||
"error": {
|
||||
"details": [
|
||||
{
|
||||
"code": "aaaaaaaaaaaaaaaaaaaaa",
|
||||
"target": "aaaaaa",
|
||||
"message": "aaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"innererror": {
|
||||
"exceptiontype": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"errordetail": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"code": "aaaaaa",
|
||||
"target": "aaaaaaaaa",
|
||||
"message": "aaa"
|
||||
}
|
||||
},
|
||||
"lastPatchInstallationSummary": {
|
||||
"status": "Unknown",
|
||||
"installationActivityId": "aaaaaa",
|
||||
"maintenanceWindowExceeded": true,
|
||||
"notSelectedPatchCount": 20,
|
||||
"excludedPatchCount": 1,
|
||||
"pendingPatchCount": 2,
|
||||
"installedPatchCount": 28,
|
||||
"failedPatchCount": 30,
|
||||
"startTime": "2022-01-14T16:43:41.683Z",
|
||||
"lastModifiedTime": "2022-01-14T16:43:41.683Z",
|
||||
"error": {
|
||||
"details": [
|
||||
{
|
||||
"code": "aaaaaaaaaaaaaaaaaaaaa",
|
||||
"target": "aaaaaa",
|
||||
"message": "aaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"innererror": {
|
||||
"exceptiontype": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"errordetail": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"code": "aaaaaa",
|
||||
"target": "aaaaaaaaa",
|
||||
"message": "aaa"
|
||||
}
|
||||
},
|
||||
"configurationStatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"isVMInStandbyPool": false
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 11,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaaaaaaaaaaaaaaaaaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.685Z",
|
||||
"resourceGroup": "{resourceGroupName}"
|
||||
}
|
||||
]
|
||||
733
verify-layer/fixturi-cloud/azure-vm.json
Normal file
733
verify-layer/fixturi-cloud/azure-vm.json
Normal file
@ -0,0 +1,733 @@
|
||||
[
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
},
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aaaaaaaaaaaaa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaa",
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"firstPartyServiceTagId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firstPartyServiceTags/{firstPartyServiceTagName}"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 8,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.683Z",
|
||||
"resourceGroup": "{resourceGroupName}",
|
||||
"powerState": "VM running",
|
||||
"publicIps": "",
|
||||
"fqdns": "",
|
||||
"privateIps": "10.0.0.4",
|
||||
"macAddresses": ""
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
},
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"id": "aaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 11,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaaaaaaaaaaaaaaaaaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.685Z",
|
||||
"resourceGroup": "{resourceGroupName}",
|
||||
"powerState": "VM running",
|
||||
"publicIps": "",
|
||||
"fqdns": "",
|
||||
"privateIps": "10.0.0.4",
|
||||
"macAddresses": ""
|
||||
}
|
||||
]
|
||||
1099
verify-layer/fixturi-cloud/azure-vm.oprita.json
Normal file
1099
verify-layer/fixturi-cloud/azure-vm.oprita.json
Normal file
File diff suppressed because it is too large
Load Diff
736
verify-layer/fixturi-cloud/azure-vm.secrete.json
Normal file
736
verify-layer/fixturi-cloud/azure-vm.secrete.json
Normal file
@ -0,0 +1,736 @@
|
||||
[
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {
|
||||
"DB_PASSWORD": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1",
|
||||
"env": "prod"
|
||||
},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
},
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aaaaaaaaaaaaa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaa",
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "AERE-SINTETIC-customData-plantat-5e7b",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"firstPartyServiceTagId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firstPartyServiceTags/{firstPartyServiceTagName}"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 8,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "AERE-SINTETIC-customData-plantat-5e7b",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.683Z",
|
||||
"resourceGroup": "{resourceGroupName}",
|
||||
"powerState": "VM running",
|
||||
"publicIps": "",
|
||||
"fqdns": "",
|
||||
"privateIps": "10.0.0.4",
|
||||
"macAddresses": ""
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
},
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"id": "aaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 11,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaaaaaaaaaaaaaaaaaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.685Z",
|
||||
"resourceGroup": "{resourceGroupName}",
|
||||
"powerState": "VM running",
|
||||
"publicIps": "",
|
||||
"fqdns": "",
|
||||
"privateIps": "10.0.0.4",
|
||||
"macAddresses": ""
|
||||
}
|
||||
]
|
||||
232
verify-layer/fixturi-cloud/azure-webapp.json
Normal file
232
verify-layer/fixturi-cloud/azure-webapp.json
Normal file
@ -0,0 +1,232 @@
|
||||
[
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef6141",
|
||||
"name": "sitef6141",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef6141.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef6141",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef6141.azurewebsites.net",
|
||||
"sitef6141.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef6141.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef6141.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "DOCKER|mcr.microsoft.com/appsvc/staticsite:latest",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef6141.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef7252",
|
||||
"name": "sitef7252",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef7252.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef7252",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef7252.azurewebsites.net",
|
||||
"sitef7252.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef7252.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef7252.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef7252.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
}
|
||||
]
|
||||
347
verify-layer/fixturi-cloud/azure-webapp.oprita.json
Normal file
347
verify-layer/fixturi-cloud/azure-webapp.oprita.json
Normal file
@ -0,0 +1,347 @@
|
||||
[
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef6141",
|
||||
"name": "sitef6141",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef6141.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef6141",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef6141.azurewebsites.net",
|
||||
"sitef6141.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef6141.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef6141.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "DOCKER|mcr.microsoft.com/appsvc/staticsite:latest",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef6141.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef7252",
|
||||
"name": "sitef7252",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef7252.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef7252",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef7252.azurewebsites.net",
|
||||
"sitef7252.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef7252.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef7252.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef7252.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef0000",
|
||||
"name": "sitef0000",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Stopped",
|
||||
"hostNames": [
|
||||
"sitef7252.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef7252",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef7252.azurewebsites.net",
|
||||
"sitef7252.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef7252.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef7252.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef7252.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
}
|
||||
]
|
||||
249
verify-layer/fixturi-cloud/azure-webapp.secrete.json
Normal file
249
verify-layer/fixturi-cloud/azure-webapp.secrete.json
Normal file
@ -0,0 +1,249 @@
|
||||
[
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef6141",
|
||||
"name": "sitef6141",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef6141.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef6141",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef6141.azurewebsites.net",
|
||||
"sitef6141.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef6141.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef6141.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "DOCKER|mcr.microsoft.com/appsvc/staticsite:latest",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {},
|
||||
"appSettings": [
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
},
|
||||
{
|
||||
"name": "WEBSITES_PORT",
|
||||
"value": "8080"
|
||||
}
|
||||
],
|
||||
"connectionStrings": [
|
||||
{
|
||||
"name": "Main",
|
||||
"connectionString": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1",
|
||||
"type": "SQLAzure"
|
||||
}
|
||||
]
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef6141.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef7252",
|
||||
"name": "sitef7252",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef7252.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef7252",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef7252.azurewebsites.net",
|
||||
"sitef7252.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef7252.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef7252.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef7252.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
}
|
||||
]
|
||||
90
verify-layer/fixturi-cloud/deriva.mjs
Normal file
90
verify-layer/fixturi-cloud/deriva.mjs
Normal file
@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env node
|
||||
// fixturi-cloud/deriva.mjs (B15, 2026-10-18): fixturile adaptoarelor pe furnizori de cloud, DERIVATE determinist din sursele din
|
||||
// `surse/` (copiile exacte ale exemplelor din documentatia oficiala a fiecarui CLI/API; pentru GCP, unde documentatia nu are un exemplu
|
||||
// de iesire, o forma construita din schema documentata, numita `din-schema`). Pentru fiecare sursa se scriu:
|
||||
// <src>.json forma pe care o scrie CLI-ul (pentru Azure: `properties` aplatizat cum face az, plus campurile pe care CLI-ul le
|
||||
// adauga si pe care exemplul REST nu le are: powerState la `az vm list -d`, instanceView la `az container show`)
|
||||
// <src>.oprita.json aceeasi forma plus o incarcatura OPRITA (nu are voie sa intre in jurnal)
|
||||
// <src>.secrete.json aceeasi forma cu variabile de mediu CU VALORI plantate (valorile nu au voie sa apara in jurnal)
|
||||
// plus cateva variante care exercita refuzurile pe nume (fara -d, fara instanceView). Tot ce e modificat fata de sursa e scris AICI,
|
||||
// in cod, nu de mana in fisiere: proba re-deriva si compara octet cu octet cu ce e pe disc.
|
||||
// node deriva.mjs scrie fixturile langa acest fisier
|
||||
// node deriva.mjs --verifica compara cu ce e pe disc: 0 identice, 1 diferite
|
||||
import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url';
|
||||
|
||||
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||
const SURSE = path.join(AICI, 'surse');
|
||||
export const SECRET = 'AERE-SINTETIC-valoare-de-mediu-plantata-93c1';
|
||||
export const SECRET_DATE = 'AERE-SINTETIC-customData-plantat-5e7b';
|
||||
const citeste = (f) => JSON.parse(fs.readFileSync(path.join(SURSE, f), 'utf8'));
|
||||
const clona = (o) => JSON.parse(JSON.stringify(o));
|
||||
// az CLI scrie resursele ARM cu `properties` aplatizat in obiectul resursei (si la fel containerele dintr-un grup ACI)
|
||||
const aplatizeaza = (o) => { const { properties, ...rest } = o; return { ...rest, ...(properties || {}) }; };
|
||||
|
||||
export function deriva() {
|
||||
const out = {};
|
||||
// ---- AWS: iesirile CLI sunt copiate exact; variantele adauga/planteaza ----------------------------------------------------
|
||||
{ const t = citeste('aws-ecs-describe-tasks.json'); const d = citeste('aws-ecs-describe-task-definition.json');
|
||||
// definitia din documentatie (hello_world:8) nu e cea a task-ului din exemplu (console-sample-app-static2:1): forma CLI primeste
|
||||
// o definitie aliniata pe ARN-ul si pe containerul task-ului, cu un secret referit prin ARN (secrets[].valueFrom), nu prin valoare
|
||||
const def = clona(d); def.taskDefinition.taskDefinitionArn = t.tasks[0].taskDefinitionArn; def.taskDefinition.family = 'console-sample-app-static2'; def.taskDefinition.revision = 1;
|
||||
def.taskDefinition.containerDefinitions = [{ name: 'simple-app', image: 'httpd:2.4', cpu: 10, memory: 300, essential: true, command: ['httpd-foreground'],
|
||||
environment: [{ name: 'HTTPD_PORT', value: '80' }], secrets: [{ name: 'API_TOKEN', valueFrom: 'arn:aws:secretsmanager:us-east-1:123456789012:secret:api-token-AbCdEf' }],
|
||||
mountPoints: [{ sourceVolume: 'www', containerPath: '/usr/local/apache2/htdocs', readOnly: true }], portMappings: [{ containerPort: 80, hostPort: 80 }] }];
|
||||
out['aws-ecs.json'] = clona(t); out['aws-ecs.definitii.json'] = def;
|
||||
const op = clona(t); const oprit = clona(t.tasks[0]); oprit.taskArn = 'arn:aws:ecs:us-east-1:123456789012:task/MyCluster/0000000000000000000000oprita'; oprit.lastStatus = 'STOPPED'; oprit.desiredStatus = 'STOPPED'; oprit.stoppedReason = 'Essential container in task exited'; oprit.containers[0].lastStatus = 'STOPPED'; oprit.containers[0].exitCode = 0; op.tasks.push(oprit);
|
||||
out['aws-ecs.oprita.json'] = op;
|
||||
const sec = clona(t); sec.tasks[0].overrides.containerOverrides[0].environment = [{ name: 'OVERRIDE_TOKEN', value: SECRET }]; out['aws-ecs.secrete.json'] = sec;
|
||||
const secDef = clona(def); secDef.taskDefinition.containerDefinitions[0].environment.push({ name: 'DB_PASSWORD', value: SECRET }); out['aws-ecs.secrete.definitii.json'] = secDef; }
|
||||
{ const e = citeste('aws-ec2-describe-instances.json'); out['aws-ec2.json'] = clona(e);
|
||||
const op = clona(e); const oprit = clona(e.Reservations[0].Instances[0]); oprit.InstanceId = 'i-0000000000oprita00'; oprit.State = { Code: 80, Name: 'stopped' }; oprit.StateTransitionReason = 'User initiated (2026-10-17 20:00:00 GMT)'; op.Reservations[0].Instances.push(oprit); out['aws-ec2.oprita.json'] = op;
|
||||
const sec = clona(e); sec.Reservations[0].Instances[0].Tags.push({ Key: 'DB_PASSWORD', Value: SECRET }); out['aws-ec2.secrete.json'] = sec; }
|
||||
{ const l = citeste('aws-lambda-list-functions.json'); out['aws-lambda.json'] = clona(l);
|
||||
const op = clona(l); const oprit = clona(l.Functions[0]); oprit.FunctionName = 'inactive-function'; oprit.FunctionArn = 'arn:aws:lambda:us-west-2:123456789012:function:inactive-function'; oprit.State = 'Inactive'; oprit.StateReason = 'Function is inactive'; op.Functions.push(oprit); out['aws-lambda.oprita.json'] = op;
|
||||
const sec = clona(l); sec.Functions[0].Environment = { Variables: { DB_PASSWORD: SECRET, LOG_LEVEL: 'info' } }; out['aws-lambda.secrete.json'] = sec; }
|
||||
// ---- Azure: exemplele REST, aduse la forma CLI --------------------------------------------------------------------------------
|
||||
{ const r = citeste('azure-vm-list-rest-2026-04-01.json'); const vms = r.responses['200'].body.value.map((v) => ({ ...aplatizeaza(v), resourceGroup: /\/resourceGroups\/([^/]+)\//i.exec(v.id)[1] }));
|
||||
// `az vm list -d` adauga powerState (displayStatus-ul starii PowerState/* din instanceView) si scoate instanceView (azure-cli vm/custom.py get_vm_details)
|
||||
const cuD = vms.map((v) => { const { instanceView, ...rest } = v; return { ...rest, powerState: 'VM running', publicIps: '', fqdns: '', privateIps: '10.0.0.4', macAddresses: '' }; });
|
||||
out['azure-vm.json'] = cuD; out['azure-vm.fara-d.json'] = vms;
|
||||
const op = clona(cuD); const oprit = clona(cuD[0]); oprit.name = 'vm-oprita'; oprit.id = oprit.id.replace(/\/[^/]+$/, '/vm-oprita'); oprit.powerState = 'VM deallocated'; op.push(oprit); out['azure-vm.oprita.json'] = op;
|
||||
const sec = clona(cuD); sec[0].osProfile.customData = SECRET_DATE; sec[0].userData = SECRET_DATE; sec[0].tags = { DB_PASSWORD: SECRET, env: 'prod' }; out['azure-vm.secrete.json'] = sec; }
|
||||
{ const r = citeste('azure-container-groups-list-rest-2026-07-01.json');
|
||||
// `az container show` poarta instanceView (ContainerPropertiesInstanceView: currentState {state, startTime, detailStatus}, restartCount); exemplul REST de list nu il are
|
||||
const stare = (state, extra = {}) => ({ currentState: { state, startTime: '2026-10-18T06:00:00Z', detailStatus: '', ...extra }, events: [], restartCount: 0 });
|
||||
const grupuri = r.value.map((g) => { const f = aplatizeaza(g); f.resourceGroup = /\/resourceGroups\/([^/]+)\//i.exec(g.id)[1]; f.containers = f.containers.map(aplatizeaza); return f; });
|
||||
const cuStare = clona(grupuri); for (const g of cuStare) { g.instanceView = { state: 'Running', events: [] }; for (const c of g.containers) c.instanceView = stare('Running'); }
|
||||
out['azure-container.json'] = cuStare; out['azure-container.fara-stare.json'] = grupuri;
|
||||
const op = clona(cuStare); const oprit = clona(cuStare[0]); oprit.name = 'demo2'; oprit.id = oprit.id.replace(/\/[^/]+$/, '/demo2'); oprit.instanceView.state = 'Stopped'; oprit.containers[0].instanceView = stare('Terminated', { exitCode: 0, finishTime: '2026-10-18T06:05:00Z' }); op.push(oprit); out['azure-container.oprita.json'] = op;
|
||||
const sec = clona(cuStare); sec[0].containers[0].environmentVariables = [{ name: 'DB_PASSWORD', value: SECRET }, { name: 'API_KEY', secureValue: SECRET }]; out['azure-container.secrete.json'] = sec; }
|
||||
{ const r = citeste('azure-containerapps-list-rest-2026-07-01.json'); const apps = r.responses['200'].body.value; out['azure-containerapp.json'] = clona(apps);
|
||||
const op = clona(apps); const oprit = clona(apps[0]); oprit.name = 'testcontainerApp1'; oprit.id = oprit.id.replace(/\/[^/]+$/, '/testcontainerApp1'); oprit.properties.runningStatus = 'Stopped'; op.push(oprit); out['azure-containerapp.oprita.json'] = op;
|
||||
const sec = clona(apps); sec[0].properties.template.containers[0].env = [{ name: 'DB_PASSWORD', value: SECRET }, { name: 'API_KEY', secretRef: 'api-key' }]; sec[0].properties.configuration.secrets = [{ name: 'api-key', value: SECRET }]; out['azure-containerapp.secrete.json'] = sec; }
|
||||
{ const r = citeste('azure-webapps-list-rest-2024-11-01.json'); const sites = r.value.map(aplatizeaza);
|
||||
// primul sit primeste un runtime de container (cum il lasa `az webapp config container set`); exemplul REST are linuxFxVersion gol
|
||||
sites[0].siteConfig.linuxFxVersion = 'DOCKER|mcr.microsoft.com/appsvc/staticsite:latest';
|
||||
out['azure-webapp.json'] = clona(sites);
|
||||
const op = clona(sites); const oprit = clona(sites[1]); oprit.name = 'sitef0000'; oprit.id = oprit.id.replace(/\/[^/]+$/, '/sitef0000'); oprit.state = 'Stopped'; op.push(oprit); out['azure-webapp.oprita.json'] = op;
|
||||
const sec = clona(sites); sec[0].siteConfig.appSettings = [{ name: 'DB_PASSWORD', value: SECRET }, { name: 'WEBSITES_PORT', value: '8080' }]; sec[0].siteConfig.connectionStrings = [{ name: 'Main', connectionString: SECRET, type: 'SQLAzure' }]; out['azure-webapp.secrete.json'] = sec; }
|
||||
// ---- GCP: formele din schema ----------------------------------------------------------------------------------------------------
|
||||
{ const i = citeste('gcp-compute-instances-din-schema.json'); out['gcp-compute.json'] = clona(i);
|
||||
const op = clona(i); const oprit = clona(i[0]); oprit.name = 'api-2'; oprit.id = '4218766341062832346'; oprit.status = 'TERMINATED'; oprit.selfLink = oprit.selfLink.replace(/api-1$/, 'api-2'); oprit.lastStopTimestamp = '2026-10-17T20:00:00.000-07:00'; op.push(oprit); out['gcp-compute.oprita.json'] = op;
|
||||
const sec = clona(i); sec[0].metadata.items.push({ key: 'user-data', value: SECRET }); sec[0].metadata.items.find((x) => x.key === 'startup-script').value = `#! /bin/bash\nexport DB_PASSWORD=${SECRET}\n`; out['gcp-compute.secrete.json'] = sec; }
|
||||
{ const s = citeste('gcp-run-services-din-schema.json'); out['gcp-run.json'] = clona(s);
|
||||
const op = clona(s); const oprit = clona(s[0]); oprit.metadata.name = 'batch'; oprit.metadata.uid = '00000000-0000-4000-8000-00000000oprita'; oprit.status.conditions[0] = { type: 'Ready', status: 'False', reason: 'RevisionFailed', message: 'Revision batch-00001-abc is not ready.', lastTransitionTime: '2026-10-17T20:00:00.000000Z' }; op.push(oprit); out['gcp-run.oprita.json'] = op;
|
||||
const sec = clona(s); sec[0].spec.template.spec.containers[0].env.push({ name: 'DB_PASSWORD_PLAIN', value: SECRET }); out['gcp-run.secrete.json'] = sec; }
|
||||
return out;
|
||||
}
|
||||
export const FISIERE = Object.keys(deriva());
|
||||
export const text = (o) => JSON.stringify(o, null, 2) + '\n';
|
||||
|
||||
if (import.meta.url === pathToFileURL(process.argv[1] || '').href) {
|
||||
const d = deriva(); let diferite = 0;
|
||||
for (const [f, o] of Object.entries(d)) {
|
||||
const p = path.join(AICI, f); const t = text(o);
|
||||
if (process.argv.includes('--verifica')) { const pe = fs.existsSync(p) ? fs.readFileSync(p, 'utf8') : null; if (pe !== t) { diferite++; console.log('DIFERIT ' + f); } }
|
||||
else fs.writeFileSync(p, t);
|
||||
}
|
||||
if (process.argv.includes('--verifica')) { console.log(diferite ? `${diferite} fixturi difera de derivare` : `fixturile de pe disc sunt cele derivate (${Object.keys(d).length})`); process.exitCode = diferite ? 1 : 0; }
|
||||
else console.log(`scrise ${Object.keys(d).length} fixturi in ${AICI}`);
|
||||
}
|
||||
110
verify-layer/fixturi-cloud/gcp-compute.json
Normal file
110
verify-layer/fixturi-cloud/gcp-compute.json
Normal file
@ -0,0 +1,110 @@
|
||||
[
|
||||
{
|
||||
"kind": "compute#instance",
|
||||
"id": "4218766341062832345",
|
||||
"creationTimestamp": "2026-10-01T08:12:03.512-07:00",
|
||||
"name": "api-1",
|
||||
"description": "",
|
||||
"tags": {
|
||||
"items": [
|
||||
"http-server"
|
||||
],
|
||||
"fingerprint": "Qm9vdHN0cmFw"
|
||||
},
|
||||
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-standard-2",
|
||||
"status": "RUNNING",
|
||||
"zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"kind": "compute#networkInterface",
|
||||
"network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/default",
|
||||
"subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/default",
|
||||
"networkIP": "10.128.0.5",
|
||||
"name": "nic0",
|
||||
"fingerprint": "bmljMA==",
|
||||
"stackType": "IPV4_ONLY"
|
||||
}
|
||||
],
|
||||
"disks": [
|
||||
{
|
||||
"kind": "compute#attachedDisk",
|
||||
"type": "PERSISTENT",
|
||||
"mode": "READ_WRITE",
|
||||
"source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/api-1",
|
||||
"deviceName": "persistent-disk-0",
|
||||
"index": 0,
|
||||
"boot": true,
|
||||
"autoDelete": true,
|
||||
"licenses": [
|
||||
"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-12-bookworm"
|
||||
],
|
||||
"interface": "SCSI",
|
||||
"guestOsFeatures": [
|
||||
{
|
||||
"type": "UEFI_COMPATIBLE"
|
||||
},
|
||||
{
|
||||
"type": "VIRTIO_SCSI_MULTIQUEUE"
|
||||
},
|
||||
{
|
||||
"type": "GVNIC"
|
||||
}
|
||||
],
|
||||
"diskSizeGb": "10",
|
||||
"architecture": "X86_64"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kind": "compute#metadata",
|
||||
"fingerprint": "bWV0YWRhdGE=",
|
||||
"items": [
|
||||
{
|
||||
"key": "enable-oslogin",
|
||||
"value": "TRUE"
|
||||
},
|
||||
{
|
||||
"key": "ssh-keys",
|
||||
"value": "operator:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleExampleExampleExampleExampleExampleEx operator"
|
||||
},
|
||||
{
|
||||
"key": "startup-script",
|
||||
"value": "#! /bin/bash\napt-get update\n"
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceAccounts": [
|
||||
{
|
||||
"email": "123456789012-compute@developer.gserviceaccount.com",
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/api-1",
|
||||
"scheduling": {
|
||||
"onHostMaintenance": "MIGRATE",
|
||||
"automaticRestart": true,
|
||||
"preemptible": false,
|
||||
"provisioningModel": "STANDARD"
|
||||
},
|
||||
"cpuPlatform": "Intel Broadwell",
|
||||
"labels": {
|
||||
"env": "prod",
|
||||
"team": "payments"
|
||||
},
|
||||
"labelFingerprint": "bGFiZWxz",
|
||||
"startRestricted": false,
|
||||
"deletionProtection": false,
|
||||
"shieldedInstanceConfig": {
|
||||
"enableSecureBoot": false,
|
||||
"enableVtpm": true,
|
||||
"enableIntegrityMonitoring": true
|
||||
},
|
||||
"shieldedInstanceIntegrityPolicy": {
|
||||
"updateAutoLearnPolicy": true
|
||||
},
|
||||
"fingerprint": "aW5zdGFuY2U=",
|
||||
"lastStartTimestamp": "2026-10-01T08:12:40.101-07:00",
|
||||
"satisfiesPzi": true
|
||||
}
|
||||
]
|
||||
219
verify-layer/fixturi-cloud/gcp-compute.oprita.json
Normal file
219
verify-layer/fixturi-cloud/gcp-compute.oprita.json
Normal file
@ -0,0 +1,219 @@
|
||||
[
|
||||
{
|
||||
"kind": "compute#instance",
|
||||
"id": "4218766341062832345",
|
||||
"creationTimestamp": "2026-10-01T08:12:03.512-07:00",
|
||||
"name": "api-1",
|
||||
"description": "",
|
||||
"tags": {
|
||||
"items": [
|
||||
"http-server"
|
||||
],
|
||||
"fingerprint": "Qm9vdHN0cmFw"
|
||||
},
|
||||
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-standard-2",
|
||||
"status": "RUNNING",
|
||||
"zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"kind": "compute#networkInterface",
|
||||
"network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/default",
|
||||
"subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/default",
|
||||
"networkIP": "10.128.0.5",
|
||||
"name": "nic0",
|
||||
"fingerprint": "bmljMA==",
|
||||
"stackType": "IPV4_ONLY"
|
||||
}
|
||||
],
|
||||
"disks": [
|
||||
{
|
||||
"kind": "compute#attachedDisk",
|
||||
"type": "PERSISTENT",
|
||||
"mode": "READ_WRITE",
|
||||
"source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/api-1",
|
||||
"deviceName": "persistent-disk-0",
|
||||
"index": 0,
|
||||
"boot": true,
|
||||
"autoDelete": true,
|
||||
"licenses": [
|
||||
"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-12-bookworm"
|
||||
],
|
||||
"interface": "SCSI",
|
||||
"guestOsFeatures": [
|
||||
{
|
||||
"type": "UEFI_COMPATIBLE"
|
||||
},
|
||||
{
|
||||
"type": "VIRTIO_SCSI_MULTIQUEUE"
|
||||
},
|
||||
{
|
||||
"type": "GVNIC"
|
||||
}
|
||||
],
|
||||
"diskSizeGb": "10",
|
||||
"architecture": "X86_64"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kind": "compute#metadata",
|
||||
"fingerprint": "bWV0YWRhdGE=",
|
||||
"items": [
|
||||
{
|
||||
"key": "enable-oslogin",
|
||||
"value": "TRUE"
|
||||
},
|
||||
{
|
||||
"key": "ssh-keys",
|
||||
"value": "operator:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleExampleExampleExampleExampleExampleEx operator"
|
||||
},
|
||||
{
|
||||
"key": "startup-script",
|
||||
"value": "#! /bin/bash\napt-get update\n"
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceAccounts": [
|
||||
{
|
||||
"email": "123456789012-compute@developer.gserviceaccount.com",
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/api-1",
|
||||
"scheduling": {
|
||||
"onHostMaintenance": "MIGRATE",
|
||||
"automaticRestart": true,
|
||||
"preemptible": false,
|
||||
"provisioningModel": "STANDARD"
|
||||
},
|
||||
"cpuPlatform": "Intel Broadwell",
|
||||
"labels": {
|
||||
"env": "prod",
|
||||
"team": "payments"
|
||||
},
|
||||
"labelFingerprint": "bGFiZWxz",
|
||||
"startRestricted": false,
|
||||
"deletionProtection": false,
|
||||
"shieldedInstanceConfig": {
|
||||
"enableSecureBoot": false,
|
||||
"enableVtpm": true,
|
||||
"enableIntegrityMonitoring": true
|
||||
},
|
||||
"shieldedInstanceIntegrityPolicy": {
|
||||
"updateAutoLearnPolicy": true
|
||||
},
|
||||
"fingerprint": "aW5zdGFuY2U=",
|
||||
"lastStartTimestamp": "2026-10-01T08:12:40.101-07:00",
|
||||
"satisfiesPzi": true
|
||||
},
|
||||
{
|
||||
"kind": "compute#instance",
|
||||
"id": "4218766341062832346",
|
||||
"creationTimestamp": "2026-10-01T08:12:03.512-07:00",
|
||||
"name": "api-2",
|
||||
"description": "",
|
||||
"tags": {
|
||||
"items": [
|
||||
"http-server"
|
||||
],
|
||||
"fingerprint": "Qm9vdHN0cmFw"
|
||||
},
|
||||
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-standard-2",
|
||||
"status": "TERMINATED",
|
||||
"zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"kind": "compute#networkInterface",
|
||||
"network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/default",
|
||||
"subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/default",
|
||||
"networkIP": "10.128.0.5",
|
||||
"name": "nic0",
|
||||
"fingerprint": "bmljMA==",
|
||||
"stackType": "IPV4_ONLY"
|
||||
}
|
||||
],
|
||||
"disks": [
|
||||
{
|
||||
"kind": "compute#attachedDisk",
|
||||
"type": "PERSISTENT",
|
||||
"mode": "READ_WRITE",
|
||||
"source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/api-1",
|
||||
"deviceName": "persistent-disk-0",
|
||||
"index": 0,
|
||||
"boot": true,
|
||||
"autoDelete": true,
|
||||
"licenses": [
|
||||
"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-12-bookworm"
|
||||
],
|
||||
"interface": "SCSI",
|
||||
"guestOsFeatures": [
|
||||
{
|
||||
"type": "UEFI_COMPATIBLE"
|
||||
},
|
||||
{
|
||||
"type": "VIRTIO_SCSI_MULTIQUEUE"
|
||||
},
|
||||
{
|
||||
"type": "GVNIC"
|
||||
}
|
||||
],
|
||||
"diskSizeGb": "10",
|
||||
"architecture": "X86_64"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kind": "compute#metadata",
|
||||
"fingerprint": "bWV0YWRhdGE=",
|
||||
"items": [
|
||||
{
|
||||
"key": "enable-oslogin",
|
||||
"value": "TRUE"
|
||||
},
|
||||
{
|
||||
"key": "ssh-keys",
|
||||
"value": "operator:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleExampleExampleExampleExampleExampleEx operator"
|
||||
},
|
||||
{
|
||||
"key": "startup-script",
|
||||
"value": "#! /bin/bash\napt-get update\n"
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceAccounts": [
|
||||
{
|
||||
"email": "123456789012-compute@developer.gserviceaccount.com",
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/api-2",
|
||||
"scheduling": {
|
||||
"onHostMaintenance": "MIGRATE",
|
||||
"automaticRestart": true,
|
||||
"preemptible": false,
|
||||
"provisioningModel": "STANDARD"
|
||||
},
|
||||
"cpuPlatform": "Intel Broadwell",
|
||||
"labels": {
|
||||
"env": "prod",
|
||||
"team": "payments"
|
||||
},
|
||||
"labelFingerprint": "bGFiZWxz",
|
||||
"startRestricted": false,
|
||||
"deletionProtection": false,
|
||||
"shieldedInstanceConfig": {
|
||||
"enableSecureBoot": false,
|
||||
"enableVtpm": true,
|
||||
"enableIntegrityMonitoring": true
|
||||
},
|
||||
"shieldedInstanceIntegrityPolicy": {
|
||||
"updateAutoLearnPolicy": true
|
||||
},
|
||||
"fingerprint": "aW5zdGFuY2U=",
|
||||
"lastStartTimestamp": "2026-10-01T08:12:40.101-07:00",
|
||||
"satisfiesPzi": true,
|
||||
"lastStopTimestamp": "2026-10-17T20:00:00.000-07:00"
|
||||
}
|
||||
]
|
||||
114
verify-layer/fixturi-cloud/gcp-compute.secrete.json
Normal file
114
verify-layer/fixturi-cloud/gcp-compute.secrete.json
Normal file
@ -0,0 +1,114 @@
|
||||
[
|
||||
{
|
||||
"kind": "compute#instance",
|
||||
"id": "4218766341062832345",
|
||||
"creationTimestamp": "2026-10-01T08:12:03.512-07:00",
|
||||
"name": "api-1",
|
||||
"description": "",
|
||||
"tags": {
|
||||
"items": [
|
||||
"http-server"
|
||||
],
|
||||
"fingerprint": "Qm9vdHN0cmFw"
|
||||
},
|
||||
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-standard-2",
|
||||
"status": "RUNNING",
|
||||
"zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"kind": "compute#networkInterface",
|
||||
"network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/default",
|
||||
"subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/default",
|
||||
"networkIP": "10.128.0.5",
|
||||
"name": "nic0",
|
||||
"fingerprint": "bmljMA==",
|
||||
"stackType": "IPV4_ONLY"
|
||||
}
|
||||
],
|
||||
"disks": [
|
||||
{
|
||||
"kind": "compute#attachedDisk",
|
||||
"type": "PERSISTENT",
|
||||
"mode": "READ_WRITE",
|
||||
"source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/api-1",
|
||||
"deviceName": "persistent-disk-0",
|
||||
"index": 0,
|
||||
"boot": true,
|
||||
"autoDelete": true,
|
||||
"licenses": [
|
||||
"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-12-bookworm"
|
||||
],
|
||||
"interface": "SCSI",
|
||||
"guestOsFeatures": [
|
||||
{
|
||||
"type": "UEFI_COMPATIBLE"
|
||||
},
|
||||
{
|
||||
"type": "VIRTIO_SCSI_MULTIQUEUE"
|
||||
},
|
||||
{
|
||||
"type": "GVNIC"
|
||||
}
|
||||
],
|
||||
"diskSizeGb": "10",
|
||||
"architecture": "X86_64"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kind": "compute#metadata",
|
||||
"fingerprint": "bWV0YWRhdGE=",
|
||||
"items": [
|
||||
{
|
||||
"key": "enable-oslogin",
|
||||
"value": "TRUE"
|
||||
},
|
||||
{
|
||||
"key": "ssh-keys",
|
||||
"value": "operator:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleExampleExampleExampleExampleExampleEx operator"
|
||||
},
|
||||
{
|
||||
"key": "startup-script",
|
||||
"value": "#! /bin/bash\nexport DB_PASSWORD=AERE-SINTETIC-valoare-de-mediu-plantata-93c1\n"
|
||||
},
|
||||
{
|
||||
"key": "user-data",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceAccounts": [
|
||||
{
|
||||
"email": "123456789012-compute@developer.gserviceaccount.com",
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/api-1",
|
||||
"scheduling": {
|
||||
"onHostMaintenance": "MIGRATE",
|
||||
"automaticRestart": true,
|
||||
"preemptible": false,
|
||||
"provisioningModel": "STANDARD"
|
||||
},
|
||||
"cpuPlatform": "Intel Broadwell",
|
||||
"labels": {
|
||||
"env": "prod",
|
||||
"team": "payments"
|
||||
},
|
||||
"labelFingerprint": "bGFiZWxz",
|
||||
"startRestricted": false,
|
||||
"deletionProtection": false,
|
||||
"shieldedInstanceConfig": {
|
||||
"enableSecureBoot": false,
|
||||
"enableVtpm": true,
|
||||
"enableIntegrityMonitoring": true
|
||||
},
|
||||
"shieldedInstanceIntegrityPolicy": {
|
||||
"updateAutoLearnPolicy": true
|
||||
},
|
||||
"fingerprint": "aW5zdGFuY2U=",
|
||||
"lastStartTimestamp": "2026-10-01T08:12:40.101-07:00",
|
||||
"satisfiesPzi": true
|
||||
}
|
||||
]
|
||||
130
verify-layer/fixturi-cloud/gcp-run.json
Normal file
130
verify-layer/fixturi-cloud/gcp-run.json
Normal file
@ -0,0 +1,130 @@
|
||||
[
|
||||
{
|
||||
"apiVersion": "serving.knative.dev/v1",
|
||||
"kind": "Service",
|
||||
"metadata": {
|
||||
"name": "api",
|
||||
"namespace": "123456789012",
|
||||
"selfLink": "/apis/serving.knative.dev/v1/namespaces/123456789012/services/api",
|
||||
"uid": "3f2a9c1e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
|
||||
"resourceVersion": "AAYy1ZQ0JdU",
|
||||
"generation": 3,
|
||||
"creationTimestamp": "2026-09-30T14:02:11.431902Z",
|
||||
"labels": {
|
||||
"cloud.googleapis.com/location": "europe-west1"
|
||||
},
|
||||
"annotations": {
|
||||
"run.googleapis.com/ingress": "all",
|
||||
"run.googleapis.com/ingress-status": "all",
|
||||
"serving.knative.dev/creator": "operator@example.com",
|
||||
"serving.knative.dev/lastModifier": "operator@example.com"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"template": {
|
||||
"metadata": {
|
||||
"name": "api-00003-xyz",
|
||||
"annotations": {
|
||||
"autoscaling.knative.dev/maxScale": "10",
|
||||
"run.googleapis.com/execution-environment": "gen2"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containerConcurrency": 80,
|
||||
"timeoutSeconds": 300,
|
||||
"serviceAccountName": "api-runner@example-project.iam.gserviceaccount.com",
|
||||
"containers": [
|
||||
{
|
||||
"name": "api-1",
|
||||
"image": "europe-west1-docker.pkg.dev/example-project/apps/api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
||||
"args": [
|
||||
"--port=8080"
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"name": "http1",
|
||||
"containerPort": 8080
|
||||
}
|
||||
],
|
||||
"env": [
|
||||
{
|
||||
"name": "LOG_LEVEL",
|
||||
"value": "info"
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"valueFrom": {
|
||||
"secretKeyRef": {
|
||||
"key": "latest",
|
||||
"name": "db-password"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "1000m",
|
||||
"memory": "512Mi"
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "cache",
|
||||
"mountPath": "/cache"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "cache",
|
||||
"emptyDir": {
|
||||
"medium": "Memory",
|
||||
"sizeLimit": "128Mi"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"traffic": [
|
||||
{
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"observedGeneration": 3,
|
||||
"conditions": [
|
||||
{
|
||||
"type": "Ready",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
},
|
||||
{
|
||||
"type": "ConfigurationsReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:20.113005Z"
|
||||
},
|
||||
{
|
||||
"type": "RoutesReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
}
|
||||
],
|
||||
"latestReadyRevisionName": "api-00003-xyz",
|
||||
"latestCreatedRevisionName": "api-00003-xyz",
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "api-00003-xyz",
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
],
|
||||
"url": "https://api-abc123-ew.a.run.app",
|
||||
"address": {
|
||||
"url": "https://api-abc123-ew.a.run.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
260
verify-layer/fixturi-cloud/gcp-run.oprita.json
Normal file
260
verify-layer/fixturi-cloud/gcp-run.oprita.json
Normal file
@ -0,0 +1,260 @@
|
||||
[
|
||||
{
|
||||
"apiVersion": "serving.knative.dev/v1",
|
||||
"kind": "Service",
|
||||
"metadata": {
|
||||
"name": "api",
|
||||
"namespace": "123456789012",
|
||||
"selfLink": "/apis/serving.knative.dev/v1/namespaces/123456789012/services/api",
|
||||
"uid": "3f2a9c1e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
|
||||
"resourceVersion": "AAYy1ZQ0JdU",
|
||||
"generation": 3,
|
||||
"creationTimestamp": "2026-09-30T14:02:11.431902Z",
|
||||
"labels": {
|
||||
"cloud.googleapis.com/location": "europe-west1"
|
||||
},
|
||||
"annotations": {
|
||||
"run.googleapis.com/ingress": "all",
|
||||
"run.googleapis.com/ingress-status": "all",
|
||||
"serving.knative.dev/creator": "operator@example.com",
|
||||
"serving.knative.dev/lastModifier": "operator@example.com"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"template": {
|
||||
"metadata": {
|
||||
"name": "api-00003-xyz",
|
||||
"annotations": {
|
||||
"autoscaling.knative.dev/maxScale": "10",
|
||||
"run.googleapis.com/execution-environment": "gen2"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containerConcurrency": 80,
|
||||
"timeoutSeconds": 300,
|
||||
"serviceAccountName": "api-runner@example-project.iam.gserviceaccount.com",
|
||||
"containers": [
|
||||
{
|
||||
"name": "api-1",
|
||||
"image": "europe-west1-docker.pkg.dev/example-project/apps/api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
||||
"args": [
|
||||
"--port=8080"
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"name": "http1",
|
||||
"containerPort": 8080
|
||||
}
|
||||
],
|
||||
"env": [
|
||||
{
|
||||
"name": "LOG_LEVEL",
|
||||
"value": "info"
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"valueFrom": {
|
||||
"secretKeyRef": {
|
||||
"key": "latest",
|
||||
"name": "db-password"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "1000m",
|
||||
"memory": "512Mi"
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "cache",
|
||||
"mountPath": "/cache"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "cache",
|
||||
"emptyDir": {
|
||||
"medium": "Memory",
|
||||
"sizeLimit": "128Mi"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"traffic": [
|
||||
{
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"observedGeneration": 3,
|
||||
"conditions": [
|
||||
{
|
||||
"type": "Ready",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
},
|
||||
{
|
||||
"type": "ConfigurationsReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:20.113005Z"
|
||||
},
|
||||
{
|
||||
"type": "RoutesReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
}
|
||||
],
|
||||
"latestReadyRevisionName": "api-00003-xyz",
|
||||
"latestCreatedRevisionName": "api-00003-xyz",
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "api-00003-xyz",
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
],
|
||||
"url": "https://api-abc123-ew.a.run.app",
|
||||
"address": {
|
||||
"url": "https://api-abc123-ew.a.run.app"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "serving.knative.dev/v1",
|
||||
"kind": "Service",
|
||||
"metadata": {
|
||||
"name": "batch",
|
||||
"namespace": "123456789012",
|
||||
"selfLink": "/apis/serving.knative.dev/v1/namespaces/123456789012/services/api",
|
||||
"uid": "00000000-0000-4000-8000-00000000oprita",
|
||||
"resourceVersion": "AAYy1ZQ0JdU",
|
||||
"generation": 3,
|
||||
"creationTimestamp": "2026-09-30T14:02:11.431902Z",
|
||||
"labels": {
|
||||
"cloud.googleapis.com/location": "europe-west1"
|
||||
},
|
||||
"annotations": {
|
||||
"run.googleapis.com/ingress": "all",
|
||||
"run.googleapis.com/ingress-status": "all",
|
||||
"serving.knative.dev/creator": "operator@example.com",
|
||||
"serving.knative.dev/lastModifier": "operator@example.com"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"template": {
|
||||
"metadata": {
|
||||
"name": "api-00003-xyz",
|
||||
"annotations": {
|
||||
"autoscaling.knative.dev/maxScale": "10",
|
||||
"run.googleapis.com/execution-environment": "gen2"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containerConcurrency": 80,
|
||||
"timeoutSeconds": 300,
|
||||
"serviceAccountName": "api-runner@example-project.iam.gserviceaccount.com",
|
||||
"containers": [
|
||||
{
|
||||
"name": "api-1",
|
||||
"image": "europe-west1-docker.pkg.dev/example-project/apps/api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
||||
"args": [
|
||||
"--port=8080"
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"name": "http1",
|
||||
"containerPort": 8080
|
||||
}
|
||||
],
|
||||
"env": [
|
||||
{
|
||||
"name": "LOG_LEVEL",
|
||||
"value": "info"
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"valueFrom": {
|
||||
"secretKeyRef": {
|
||||
"key": "latest",
|
||||
"name": "db-password"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "1000m",
|
||||
"memory": "512Mi"
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "cache",
|
||||
"mountPath": "/cache"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "cache",
|
||||
"emptyDir": {
|
||||
"medium": "Memory",
|
||||
"sizeLimit": "128Mi"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"traffic": [
|
||||
{
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"observedGeneration": 3,
|
||||
"conditions": [
|
||||
{
|
||||
"type": "Ready",
|
||||
"status": "False",
|
||||
"reason": "RevisionFailed",
|
||||
"message": "Revision batch-00001-abc is not ready.",
|
||||
"lastTransitionTime": "2026-10-17T20:00:00.000000Z"
|
||||
},
|
||||
{
|
||||
"type": "ConfigurationsReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:20.113005Z"
|
||||
},
|
||||
{
|
||||
"type": "RoutesReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
}
|
||||
],
|
||||
"latestReadyRevisionName": "api-00003-xyz",
|
||||
"latestCreatedRevisionName": "api-00003-xyz",
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "api-00003-xyz",
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
],
|
||||
"url": "https://api-abc123-ew.a.run.app",
|
||||
"address": {
|
||||
"url": "https://api-abc123-ew.a.run.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
134
verify-layer/fixturi-cloud/gcp-run.secrete.json
Normal file
134
verify-layer/fixturi-cloud/gcp-run.secrete.json
Normal file
@ -0,0 +1,134 @@
|
||||
[
|
||||
{
|
||||
"apiVersion": "serving.knative.dev/v1",
|
||||
"kind": "Service",
|
||||
"metadata": {
|
||||
"name": "api",
|
||||
"namespace": "123456789012",
|
||||
"selfLink": "/apis/serving.knative.dev/v1/namespaces/123456789012/services/api",
|
||||
"uid": "3f2a9c1e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
|
||||
"resourceVersion": "AAYy1ZQ0JdU",
|
||||
"generation": 3,
|
||||
"creationTimestamp": "2026-09-30T14:02:11.431902Z",
|
||||
"labels": {
|
||||
"cloud.googleapis.com/location": "europe-west1"
|
||||
},
|
||||
"annotations": {
|
||||
"run.googleapis.com/ingress": "all",
|
||||
"run.googleapis.com/ingress-status": "all",
|
||||
"serving.knative.dev/creator": "operator@example.com",
|
||||
"serving.knative.dev/lastModifier": "operator@example.com"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"template": {
|
||||
"metadata": {
|
||||
"name": "api-00003-xyz",
|
||||
"annotations": {
|
||||
"autoscaling.knative.dev/maxScale": "10",
|
||||
"run.googleapis.com/execution-environment": "gen2"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containerConcurrency": 80,
|
||||
"timeoutSeconds": 300,
|
||||
"serviceAccountName": "api-runner@example-project.iam.gserviceaccount.com",
|
||||
"containers": [
|
||||
{
|
||||
"name": "api-1",
|
||||
"image": "europe-west1-docker.pkg.dev/example-project/apps/api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
||||
"args": [
|
||||
"--port=8080"
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"name": "http1",
|
||||
"containerPort": 8080
|
||||
}
|
||||
],
|
||||
"env": [
|
||||
{
|
||||
"name": "LOG_LEVEL",
|
||||
"value": "info"
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"valueFrom": {
|
||||
"secretKeyRef": {
|
||||
"key": "latest",
|
||||
"name": "db-password"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD_PLAIN",
|
||||
"value": "AERE-SINTETIC-valoare-de-mediu-plantata-93c1"
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "1000m",
|
||||
"memory": "512Mi"
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "cache",
|
||||
"mountPath": "/cache"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "cache",
|
||||
"emptyDir": {
|
||||
"medium": "Memory",
|
||||
"sizeLimit": "128Mi"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"traffic": [
|
||||
{
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"observedGeneration": 3,
|
||||
"conditions": [
|
||||
{
|
||||
"type": "Ready",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
},
|
||||
{
|
||||
"type": "ConfigurationsReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:20.113005Z"
|
||||
},
|
||||
{
|
||||
"type": "RoutesReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
}
|
||||
],
|
||||
"latestReadyRevisionName": "api-00003-xyz",
|
||||
"latestCreatedRevisionName": "api-00003-xyz",
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "api-00003-xyz",
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
],
|
||||
"url": "https://api-abc123-ew.a.run.app",
|
||||
"address": {
|
||||
"url": "https://api-abc123-ew.a.run.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
154
verify-layer/fixturi-cloud/surse/aws-ec2-describe-instances.json
Normal file
154
verify-layer/fixturi-cloud/surse/aws-ec2-describe-instances.json
Normal file
@ -0,0 +1,154 @@
|
||||
{
|
||||
"Reservations": [
|
||||
{
|
||||
"Groups": [],
|
||||
"Instances": [
|
||||
{
|
||||
"AmiLaunchIndex": 0,
|
||||
"ImageId": "ami-0abcdef1234567890",
|
||||
"InstanceId": "i-1234567890abcdef0",
|
||||
"InstanceType": "t3.nano",
|
||||
"KeyName": "my-key-pair",
|
||||
"LaunchTime": "2022-11-15T10:48:59+00:00",
|
||||
"Monitoring": {
|
||||
"State": "disabled"
|
||||
},
|
||||
"Placement": {
|
||||
"AvailabilityZone": "us-east-2a",
|
||||
"GroupName": "",
|
||||
"Tenancy": "default"
|
||||
},
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"ProductCodes": [],
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIpAddress": "34.253.223.13",
|
||||
"State": {
|
||||
"Code": 16,
|
||||
"Name": "running"
|
||||
},
|
||||
"StateTransitionReason": "",
|
||||
"SubnetId": "subnet-04a636d18e83cfacb",
|
||||
"VpcId": "vpc-1234567890abcdef0",
|
||||
"Architecture": "x86_64",
|
||||
"BlockDeviceMappings": [
|
||||
{
|
||||
"DeviceName": "/dev/xvda",
|
||||
"Ebs": {
|
||||
"AttachTime": "2022-11-15T10:49:00+00:00",
|
||||
"DeleteOnTermination": true,
|
||||
"Status": "attached",
|
||||
"VolumeId": "vol-02e6ccdca7de29cf2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ClientToken": "1234abcd-1234-abcd-1234-d46a8903e9bc",
|
||||
"EbsOptimized": true,
|
||||
"EnaSupport": true,
|
||||
"Hypervisor": "xen",
|
||||
"IamInstanceProfile": {
|
||||
"Arn": "arn:aws:iam::111111111111:instance-profile/AmazonSSMRoleForInstancesQuickSetup",
|
||||
"Id": "111111111111111111111"
|
||||
},
|
||||
"NetworkInterfaces": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Attachment": {
|
||||
"AttachTime": "2022-11-15T10:48:59+00:00",
|
||||
"AttachmentId": "eni-attach-1234567890abcdefg",
|
||||
"DeleteOnTermination": true,
|
||||
"DeviceIndex": 0,
|
||||
"Status": "attached",
|
||||
"NetworkCardIndex": 0
|
||||
},
|
||||
"Description": "",
|
||||
"Groups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"Ipv6Addresses": [],
|
||||
"MacAddress": "00:11:22:33:44:55",
|
||||
"NetworkInterfaceId": "eni-1234567890abcdefg",
|
||||
"OwnerId": "104024344472",
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157",
|
||||
"PrivateIpAddresses": [
|
||||
{
|
||||
"Association": {
|
||||
"IpOwnerId": "amazon",
|
||||
"PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com",
|
||||
"PublicIp": "34.253.223.13"
|
||||
},
|
||||
"Primary": true,
|
||||
"PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal",
|
||||
"PrivateIpAddress": "10-0-0-157"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Status": "in-use",
|
||||
"SubnetId": "subnet-1234567890abcdefg",
|
||||
"VpcId": "vpc-1234567890abcdefg",
|
||||
"InterfaceType": "interface"
|
||||
}
|
||||
],
|
||||
"RootDeviceName": "/dev/xvda",
|
||||
"RootDeviceType": "ebs",
|
||||
"SecurityGroups": [
|
||||
{
|
||||
"GroupName": "launch-wizard-146",
|
||||
"GroupId": "sg-1234567890abcdefg"
|
||||
}
|
||||
],
|
||||
"SourceDestCheck": true,
|
||||
"Tags": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Value": "my-instance"
|
||||
}
|
||||
],
|
||||
"VirtualizationType": "hvm",
|
||||
"CpuOptions": {
|
||||
"CoreCount": 1,
|
||||
"ThreadsPerCore": 2
|
||||
},
|
||||
"CapacityReservationSpecification": {
|
||||
"CapacityReservationPreference": "open"
|
||||
},
|
||||
"HibernationOptions": {
|
||||
"Configured": false
|
||||
},
|
||||
"MetadataOptions": {
|
||||
"State": "applied",
|
||||
"HttpTokens": "optional",
|
||||
"HttpPutResponseHopLimit": 1,
|
||||
"HttpEndpoint": "enabled",
|
||||
"HttpProtocolIpv6": "disabled",
|
||||
"InstanceMetadataTags": "enabled"
|
||||
},
|
||||
"EnclaveOptions": {
|
||||
"Enabled": false
|
||||
},
|
||||
"PlatformDetails": "Linux/UNIX",
|
||||
"UsageOperation": "RunInstances",
|
||||
"UsageOperationUpdateTime": "2022-11-15T10:48:59+00:00",
|
||||
"PrivateDnsNameOptions": {
|
||||
"HostnameType": "ip-name",
|
||||
"EnableResourceNameDnsARecord": true,
|
||||
"EnableResourceNameDnsAAAARecord": false
|
||||
},
|
||||
"MaintenanceOptions": {
|
||||
"AutoRecovery": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"OwnerId": "111111111111",
|
||||
"ReservationId": "r-1234567890abcdefg"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
{
|
||||
"taskDefinition": {
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:8",
|
||||
"containerDefinitions": [
|
||||
{
|
||||
"cpu": 10,
|
||||
"environment": [],
|
||||
"essential": true,
|
||||
"image": "wordpress",
|
||||
"links": [
|
||||
"mysql"
|
||||
],
|
||||
"memory": 500,
|
||||
"mountPoints": [],
|
||||
"name": "wordpress",
|
||||
"portMappings": [
|
||||
{
|
||||
"containerPort": 80,
|
||||
"hostPort": 80
|
||||
}
|
||||
],
|
||||
"volumesFrom": []
|
||||
},
|
||||
{
|
||||
"cpu": 10,
|
||||
"environment": [
|
||||
{
|
||||
"name": "MYSQL_ROOT_PASSWORD",
|
||||
"value": "password"
|
||||
}
|
||||
],
|
||||
"essential": true,
|
||||
"image": "mysql",
|
||||
"memory": 500,
|
||||
"mountPoints": [],
|
||||
"name": "mysql",
|
||||
"portMappings": [],
|
||||
"volumesFrom": []
|
||||
}
|
||||
],
|
||||
"family": "hello_world",
|
||||
"revision": 8,
|
||||
"volumes": [],
|
||||
"status": "ACTIVE",
|
||||
"placementConstraints": [],
|
||||
"compatibilities": [
|
||||
"EXTERNAL",
|
||||
"EC2"
|
||||
],
|
||||
"registeredAt": "2024-06-21T11:15:12.669000-05:00",
|
||||
"registeredBy": "arn:aws:sts::012345678910:assumed-role/demo-role/jane-doe"
|
||||
},
|
||||
"tags": []
|
||||
}
|
||||
66
verify-layer/fixturi-cloud/surse/aws-ecs-describe-tasks.json
Normal file
66
verify-layer/fixturi-cloud/surse/aws-ecs-describe-tasks.json
Normal file
@ -0,0 +1,66 @@
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"attachments": [],
|
||||
"attributes": [
|
||||
{
|
||||
"name": "ecs.cpu-architecture",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"availabilityZone": "us-east-1b",
|
||||
"clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
|
||||
"connectivity": "CONNECTED",
|
||||
"connectivityAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/test/025c7e2c5e054a6790a29fc1fEXAMPLE",
|
||||
"containers": [
|
||||
{
|
||||
"containerArn": "arn:aws:ecs:us-east-1:123456789012:container/MyCluster/4d590253bb114126b7afa7b58eea9221/a992d1cc-ea46-474a-b6e8-24688EXAMPLE",
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58EXAMPLE",
|
||||
"name": "simple-app",
|
||||
"image": "httpd:2.4",
|
||||
"runtimeId": "91251eed27db90006ad67b1a08187290869f216557717dd5c39b37c94EXAMPLE",
|
||||
"lastStatus": "RUNNING",
|
||||
"networkBindings": [
|
||||
{
|
||||
"bindIP": "0.0.0.0",
|
||||
"containerPort": 80,
|
||||
"hostPort": 80,
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"networkInterfaces": [],
|
||||
"healthStatus": "UNKNOWN",
|
||||
"cpu": "10",
|
||||
"memory": "300"
|
||||
}
|
||||
],
|
||||
"cpu": "10",
|
||||
"createdAt": "2021-08-11T12:21:26.681000-04:00",
|
||||
"desiredStatus": "RUNNING",
|
||||
"enableExecuteCommand": false,
|
||||
"group": "service:testupdate",
|
||||
"healthStatus": "UNKNOWN",
|
||||
"lastStatus": "RUNNING",
|
||||
"launchType": "EC2",
|
||||
"memory": "300",
|
||||
"overrides": {
|
||||
"containerOverrides": [
|
||||
{
|
||||
"name": "simple-app"
|
||||
}
|
||||
],
|
||||
"inferenceAcceleratorOverrides": []
|
||||
},
|
||||
"pullStartedAt": "2021-08-11T12:21:28.234000-04:00",
|
||||
"pullStoppedAt": "2021-08-11T12:21:33.793000-04:00",
|
||||
"startedAt": "2021-08-11T12:21:34.945000-04:00",
|
||||
"startedBy": "ecs-svc/968695068243EXAMPLE",
|
||||
"tags": [],
|
||||
"taskArn": "arn:aws:ecs:us-east-1:123456789012:task/MyCluster/4d590253bb114126b7afa7b58eea9221",
|
||||
"taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/console-sample-app-static2:1",
|
||||
"version": 2
|
||||
}
|
||||
],
|
||||
"failures": []
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
{
|
||||
"Functions": [
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "dBG9m8SGdmlEjw/JYXlhhvCrAv5TxvXsbL/RMr0fT/I=",
|
||||
"FunctionName": "helloworld",
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "1718e831-badf-4253-9518-d0644210af7b",
|
||||
"CodeSize": 294,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:helloworld",
|
||||
"Handler": "helloworld.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-zgur6bf4",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-09-23T18:32:33.857+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "sU0cJ2/hOZevwV/lTxCuQqK3gDZP3i8gUoqUUVRmY6E=",
|
||||
"FunctionName": "my-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 256,
|
||||
"RevisionId": "93017fc9-59cb-41dc-901b-4845ce4bf668",
|
||||
"CodeSize": 266,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
|
||||
"Handler": "index.handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/helloWorldPython-role-uy3l9qyq",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T16:47:28.490+0000",
|
||||
"Runtime": "nodejs22.x",
|
||||
"Description": ""
|
||||
},
|
||||
{
|
||||
"Layers": [
|
||||
{
|
||||
"CodeSize": 41784542,
|
||||
"Arn": "arn:aws:lambda:us-west-2:420165488524:layer:AWSLambda-Python37-SciPy1x:2"
|
||||
},
|
||||
{
|
||||
"CodeSize": 4121,
|
||||
"Arn": "arn:aws:lambda:us-west-2:123456789012:layer:pythonLayer:1"
|
||||
}
|
||||
],
|
||||
"TracingConfig": {
|
||||
"Mode": "PassThrough"
|
||||
},
|
||||
"Version": "$LATEST",
|
||||
"CodeSha256": "ZQukCqxtkqFgyF2cU41Avj99TKQ/hNihPtDtRcc08mI=",
|
||||
"FunctionName": "my-python-function",
|
||||
"VpcConfig": {
|
||||
"SubnetIds": [],
|
||||
"VpcId": "",
|
||||
"SecurityGroupIds": []
|
||||
},
|
||||
"MemorySize": 128,
|
||||
"RevisionId": "80b4eabc-acf7-4ea8-919a-e874c213707d",
|
||||
"CodeSize": 299,
|
||||
"FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-python-function",
|
||||
"Handler": "lambda_function.lambda_handler",
|
||||
"Role": "arn:aws:iam::123456789012:role/service-role/my-python-function-role-z5g7dr6n",
|
||||
"Timeout": 3,
|
||||
"LastModified": "2025-10-01T19:40:41.643+0000",
|
||||
"Runtime": "python3.11",
|
||||
"Description": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
{
|
||||
"value": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"type": "Microsoft.ContainerInstance/containerGroups",
|
||||
"id": "/subscriptions/subid/resourceGroups/demo/providers/Microsoft.ContainerInstance/containerGroups/demo1",
|
||||
"location": "WestUs",
|
||||
"properties": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "demo1",
|
||||
"properties": {
|
||||
"command": [],
|
||||
"environmentVariables": [],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"requests": {
|
||||
"cpu": 1,
|
||||
"memoryInGB": 1.5
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"mountPath": "/mnt/volume1",
|
||||
"readOnly": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"imageRegistryCredentials": [
|
||||
{
|
||||
"server": "azcloudconsoleregistry.azurecr.io",
|
||||
"username": "azcloudconsoleregistry"
|
||||
}
|
||||
],
|
||||
"ipAddress": {
|
||||
"type": "Public",
|
||||
"ip": "10.0.0.1",
|
||||
"ports": [
|
||||
{
|
||||
"port": 80,
|
||||
"protocol": "TCP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"osType": "Linux",
|
||||
"provisioningState": "Succeeded",
|
||||
"volumes": [
|
||||
{
|
||||
"name": "volume1",
|
||||
"azureFile": {
|
||||
"readOnly": false,
|
||||
"shareName": "share1",
|
||||
"storageAccountName": "storage1"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"zones": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,148 @@
|
||||
{
|
||||
"parameters": {
|
||||
"api-version": "2026-07-01",
|
||||
"subscriptionId": "34adfa4f-cedf-4dc0-ba29-b6d1a69ab345"
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"body": {
|
||||
"nextLink": null,
|
||||
"value": [
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"type": "Microsoft.App/containerApps",
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/testcontainerApp0",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"configuration": {
|
||||
"dapr": {
|
||||
"appHealth": {
|
||||
"path": "/health",
|
||||
"enabled": true,
|
||||
"probeIntervalSeconds": 3,
|
||||
"probeTimeoutMilliseconds": 1000,
|
||||
"threshold": 3
|
||||
},
|
||||
"appPort": 3000,
|
||||
"appProtocol": "http",
|
||||
"enableApiLogging": true,
|
||||
"enabled": true,
|
||||
"httpMaxRequestSize": 10,
|
||||
"httpReadBufferSize": 30,
|
||||
"logLevel": "debug"
|
||||
},
|
||||
"ingress": {
|
||||
"customDomains": [
|
||||
{
|
||||
"name": "www.my-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-name-dot-com"
|
||||
},
|
||||
{
|
||||
"name": "www.my--other-name.com",
|
||||
"bindingType": "SniEnabled",
|
||||
"certificateId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-other-name-dot-com"
|
||||
}
|
||||
],
|
||||
"external": true,
|
||||
"fqdn": "testcontainerApp0.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"ipSecurityRestrictions": [
|
||||
{
|
||||
"name": "Allow work IP A subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/32"
|
||||
},
|
||||
{
|
||||
"name": "Allow work IP B subnet",
|
||||
"description": "Allowing all IP's within the subnet below to access containerapp",
|
||||
"action": "Allow",
|
||||
"ipAddressRange": "192.168.1.1/8"
|
||||
}
|
||||
],
|
||||
"stickySessions": {
|
||||
"affinity": "sticky"
|
||||
},
|
||||
"targetPort": 3000,
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "testcontainerApp0-ab1234"
|
||||
},
|
||||
{
|
||||
"label": "staging",
|
||||
"revisionName": "testcontainerApp0-ab4321"
|
||||
}
|
||||
],
|
||||
"transport": "auto"
|
||||
},
|
||||
"maxInactiveRevisions": 10,
|
||||
"runtime": {
|
||||
"java": {
|
||||
"enableMetrics": true
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"type": "redis"
|
||||
}
|
||||
},
|
||||
"eventStreamEndpoint": "testEndpoint",
|
||||
"latestReadyRevisionName": "testcontainerApp0-pjxhsye",
|
||||
"latestRevisionFqdn": "testcontainerApp0-pjxhsye.demokube-t24clv0g.eastus.containerApps.k4apps.io",
|
||||
"managedEnvironmentId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
|
||||
"provisioningState": "Succeeded",
|
||||
"runningStatus": "Running",
|
||||
"template": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "testcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"initContainers": [
|
||||
{
|
||||
"name": "testinitcontainerApp0",
|
||||
"image": "repo/testcontainerApp0:v4",
|
||||
"resources": {
|
||||
"cpu": 0.2,
|
||||
"memory": "100Mi"
|
||||
}
|
||||
}
|
||||
],
|
||||
"scale": {
|
||||
"cooldownPeriod": 350,
|
||||
"maxReplicas": 5,
|
||||
"minReplicas": 1,
|
||||
"pollingInterval": 35,
|
||||
"rules": [
|
||||
{
|
||||
"name": "httpscalingrule",
|
||||
"http": {
|
||||
"metadata": {
|
||||
"concurrentRequests": "50"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"serviceBinds": [
|
||||
{
|
||||
"name": "service",
|
||||
"serviceId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/rg/providers/Microsoft.App/containerApps/service"
|
||||
}
|
||||
]
|
||||
},
|
||||
"workloadProfileName": "My-GP-01"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"headers": {}
|
||||
}
|
||||
},
|
||||
"operationId": "ContainerApps_ListBySubscription",
|
||||
"title": "List Container Apps by subscription"
|
||||
}
|
||||
@ -0,0 +1,936 @@
|
||||
{
|
||||
"parameters": {
|
||||
"resourceGroupName": "rgcompute",
|
||||
"$filter": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"api-version": "2026-04-01",
|
||||
"subscriptionId": "{subscription-id}"
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"body": {
|
||||
"value": [
|
||||
{
|
||||
"properties": {
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aaaaaaaaaaaaa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaa",
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"firstPartyServiceTagId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firstPartyServiceTags/{firstPartyServiceTagName}"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 8,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.683Z"
|
||||
},
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"vmId": "{vmId}",
|
||||
"availabilitySet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "Standard_A0",
|
||||
"vmSizeProperties": {
|
||||
"vCPUsAvailable": 7,
|
||||
"vCPUsPerCore": 14
|
||||
}
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2012-R2-Datacenter",
|
||||
"version": "4.127.20170406",
|
||||
"exactVersion": "aa",
|
||||
"sharedGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"communityGalleryImageId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"id": "aaaaaaaa"
|
||||
},
|
||||
"osDisk": {
|
||||
"osType": "Windows",
|
||||
"name": "test",
|
||||
"createOption": "FromImage",
|
||||
"vhd": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"caching": "None",
|
||||
"diskSizeGB": 127,
|
||||
"encryptionSettings": {
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
},
|
||||
"image": {
|
||||
"uri": "https://{storageAccountName}.blob.core.windows.net/{containerName}/{vhdName}.vhd"
|
||||
},
|
||||
"writeAcceleratorEnabled": true,
|
||||
"diffDiskSettings": {
|
||||
"option": "Local",
|
||||
"placement": "CacheDisk"
|
||||
},
|
||||
"managedDisk": {
|
||||
"storageAccountType": "Standard_LRS",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"securityProfile": {
|
||||
"securityEncryptionType": "VMGuestStateOnly",
|
||||
"diskEncryptionSet": {
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/testingexcludedisk_OsDisk_1_74cdaedcea50483d9833c96adefa100f"
|
||||
},
|
||||
"deleteOption": "Delete"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"osProfile": {
|
||||
"computerName": "Test",
|
||||
"adminUsername": "Foo12",
|
||||
"windowsConfiguration": {
|
||||
"provisionVMAgent": true,
|
||||
"enableAutomaticUpdates": true,
|
||||
"timeZone": "aaaaaaaaaaaaaaaaaaaa",
|
||||
"additionalUnattendContent": [
|
||||
{
|
||||
"passName": "OobeSystem",
|
||||
"componentName": "Microsoft-Windows-Shell-Setup",
|
||||
"settingName": "AutoLogon",
|
||||
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"patchSettings": {
|
||||
"patchMode": "Manual",
|
||||
"enableHotpatching": true,
|
||||
"assessmentMode": "ImageDefault"
|
||||
},
|
||||
"winRM": {
|
||||
"listeners": [
|
||||
{
|
||||
"protocol": "Http",
|
||||
"certificateUrl": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"secrets": [],
|
||||
"allowExtensionOperations": true,
|
||||
"customData": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"linuxConfiguration": {
|
||||
"disablePasswordAuthentication": true,
|
||||
"ssh": {
|
||||
"publicKeys": [
|
||||
{
|
||||
"path": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"keyData": "aaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionVMAgent": true,
|
||||
"patchSettings": {
|
||||
"patchMode": "ImageDefault",
|
||||
"assessmentMode": "ImageDefault"
|
||||
}
|
||||
},
|
||||
"requireGuestProvisionSignal": true
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkApiVersion": "2022-05-01",
|
||||
"networkInterfaceConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"primary": true,
|
||||
"deleteOption": "Delete",
|
||||
"enableAcceleratedNetworking": true,
|
||||
"disableTcpStateTracking": true,
|
||||
"enableFpga": true,
|
||||
"enableIPForwarding": true,
|
||||
"networkSecurityGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"dnsSettings": {
|
||||
"dnsServers": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
]
|
||||
},
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "aaaaaaaa",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"primary": true,
|
||||
"publicIPAddressConfiguration": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"properties": {
|
||||
"idleTimeoutInMinutes": 23,
|
||||
"deleteOption": "Delete",
|
||||
"dnsSettings": {
|
||||
"domainNameLabel": "aaaaa"
|
||||
},
|
||||
"ipTags": [
|
||||
{
|
||||
"ipTagType": "aaaaa",
|
||||
"tag": "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"publicIPPrefix": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"publicIPAddressVersion": "IPv4",
|
||||
"publicIPAllocationMethod": "Dynamic"
|
||||
},
|
||||
"sku": {
|
||||
"name": "Basic",
|
||||
"tier": "Regional"
|
||||
}
|
||||
},
|
||||
"privateIPAddressVersion": "IPv4",
|
||||
"privateIPAddressPrefixLength": 28,
|
||||
"applicationSecurityGroups": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"applicationGatewayBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
],
|
||||
"loadBalancerBackendAddressPools": [
|
||||
{
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dscpConfiguration": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisioningState": "Succeeded",
|
||||
"additionalCapabilities": {
|
||||
"ultraSSDEnabled": true,
|
||||
"hibernationEnabled": true
|
||||
},
|
||||
"securityProfile": {
|
||||
"uefiSettings": {
|
||||
"secureBootEnabled": true,
|
||||
"vTpmEnabled": true
|
||||
},
|
||||
"encryptionAtHost": true,
|
||||
"securityType": "TrustedLaunch"
|
||||
},
|
||||
"diagnosticsProfile": {
|
||||
"bootDiagnostics": {
|
||||
"enabled": true,
|
||||
"storageUri": "aaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
"virtualMachineScaleSet": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"proximityPlacementGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"priority": "Regular",
|
||||
"evictionPolicy": "Deallocate",
|
||||
"billingProfile": {
|
||||
"maxPrice": 26
|
||||
},
|
||||
"host": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"hostGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
},
|
||||
"instanceView": {
|
||||
"platformUpdateDomain": 1,
|
||||
"platformFaultDomain": 29,
|
||||
"computerName": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"osName": "aaaaaaaaaaa",
|
||||
"osVersion": "aaaaaaaaaaaaaa",
|
||||
"hyperVGeneration": "V1",
|
||||
"rdpThumbPrint": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"vmAgent": {
|
||||
"vmAgentVersion": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"extensionHandlers": [
|
||||
{
|
||||
"type": "aaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaaaaaaaaa",
|
||||
"status": {
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceRedeployStatus": {
|
||||
"isCustomerInitiatedMaintenanceAllowed": true,
|
||||
"preMaintenanceWindowStartTime": "2022-01-14T16:43:41.682Z",
|
||||
"preMaintenanceWindowEndTime": "2022-01-14T16:43:41.682Z",
|
||||
"maintenanceWindowStartTime": "2022-01-14T16:43:41.682Z",
|
||||
"maintenanceWindowEndTime": "2022-01-14T16:43:41.682Z",
|
||||
"lastOperationResultCode": "None",
|
||||
"lastOperationMessage": "aa"
|
||||
},
|
||||
"disks": [
|
||||
{
|
||||
"name": "a",
|
||||
"encryptionSettings": [
|
||||
{
|
||||
"diskEncryptionKey": {
|
||||
"secretUrl": "aaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"keyEncryptionKey": {
|
||||
"keyUrl": "aaaaaaaaaaaaa",
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"extensions": [
|
||||
{
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"vmHealth": {
|
||||
"status": {
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
},
|
||||
"bootDiagnostics": {
|
||||
"consoleScreenshotBlobUri": "aaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"serialConsoleLogBlobUri": "aaaaaaaaaaaaaaaaaaa",
|
||||
"status": {
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
},
|
||||
"assignedHost": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"patchStatus": {
|
||||
"availablePatchSummary": {
|
||||
"status": "Unknown",
|
||||
"assessmentActivityId": "aaaaaaaaaaaaaaaaaaa",
|
||||
"rebootPending": true,
|
||||
"criticalAndSecurityPatchCount": 22,
|
||||
"otherPatchCount": 25,
|
||||
"startTime": "2022-01-14T16:43:41.682Z",
|
||||
"lastModifiedTime": "2022-01-14T16:43:41.683Z",
|
||||
"error": {
|
||||
"details": [
|
||||
{
|
||||
"code": "aaaaaaaaaaaaaaaaaaaaa",
|
||||
"target": "aaaaaa",
|
||||
"message": "aaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"innererror": {
|
||||
"exceptiontype": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"errordetail": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"code": "aaaaaa",
|
||||
"target": "aaaaaaaaa",
|
||||
"message": "aaa"
|
||||
}
|
||||
},
|
||||
"lastPatchInstallationSummary": {
|
||||
"status": "Unknown",
|
||||
"installationActivityId": "aaaaaa",
|
||||
"maintenanceWindowExceeded": true,
|
||||
"notSelectedPatchCount": 20,
|
||||
"excludedPatchCount": 1,
|
||||
"pendingPatchCount": 2,
|
||||
"installedPatchCount": 28,
|
||||
"failedPatchCount": 30,
|
||||
"startTime": "2022-01-14T16:43:41.683Z",
|
||||
"lastModifiedTime": "2022-01-14T16:43:41.683Z",
|
||||
"error": {
|
||||
"details": [
|
||||
{
|
||||
"code": "aaaaaaaaaaaaaaaaaaaaa",
|
||||
"target": "aaaaaa",
|
||||
"message": "aaaaaaaaaaaaa"
|
||||
}
|
||||
],
|
||||
"innererror": {
|
||||
"exceptiontype": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"errordetail": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"code": "aaaaaa",
|
||||
"target": "aaaaaaaaa",
|
||||
"message": "aaa"
|
||||
}
|
||||
},
|
||||
"configurationStatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"isVMInStandbyPool": false
|
||||
},
|
||||
"licenseType": "aaaaaaaaaaaaaa",
|
||||
"extensionsTimeBudget": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"platformFaultDomain": 11,
|
||||
"scheduledEventsProfile": {
|
||||
"terminateNotificationProfile": {
|
||||
"notBeforeTimeout": "PT10M",
|
||||
"enable": true
|
||||
},
|
||||
"osImageNotificationProfile": {
|
||||
"notBeforeTimeout": "PT15M",
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
"userData": "aaaaaaaaaaaaaaaaaaa",
|
||||
"capacityReservation": {
|
||||
"capacityReservationGroup": {
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"
|
||||
}
|
||||
},
|
||||
"applicationProfile": {
|
||||
"galleryApplications": [
|
||||
{
|
||||
"tags": "aaaaa",
|
||||
"order": 4,
|
||||
"packageReferenceId": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"configurationReference": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timeCreated": "2022-01-14T16:43:41.685Z"
|
||||
},
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"location": "eastus",
|
||||
"tags": {},
|
||||
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}",
|
||||
"name": "{virtualMachineName}",
|
||||
"plan": {
|
||||
"name": "aaaaaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaaa",
|
||||
"product": "aaaaaaaaaaaaaaaaaaaaaa",
|
||||
"promotionCode": "aaaaaaaaaaaaaa"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"properties": {
|
||||
"forceUpdateTag": "aaaaaaaaaaaaaaa",
|
||||
"publisher": "aaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaaaaaaaa",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"enableAutomaticUpgrade": true,
|
||||
"settings": {},
|
||||
"protectedSettings": {},
|
||||
"provisioningState": "aaa",
|
||||
"instanceView": {
|
||||
"name": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"typeHandlerVersion": "aaaaaa",
|
||||
"substatuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
],
|
||||
"statuses": [
|
||||
{
|
||||
"code": "aaa",
|
||||
"level": "Info",
|
||||
"displayStatus": "aaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"message": "aaaaaaaaaaaaaaaaaaa",
|
||||
"time": "2022-01-14T16:43:41.657Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressFailures": true,
|
||||
"protectedSettingsFromKeyVault": {
|
||||
"sourceVault": {
|
||||
"id": "/subscriptions/a53f7094-a16c-47af-abe4-b05c05d0d79a/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/kvName"
|
||||
},
|
||||
"secretUrl": "https://kvName.vault.azure.net/secrets/secretName/79b88b3a6f5440ffb2e73e44a0db712e"
|
||||
}
|
||||
},
|
||||
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"name": "aaaaaaaaaaaaa",
|
||||
"type": "aaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"location": "aaaaaaaaaaaaaaaa",
|
||||
"tags": {
|
||||
"key9428": "aaaaaaa"
|
||||
}
|
||||
}
|
||||
],
|
||||
"identity": {
|
||||
"principalId": "aaaaaaaaaaaaaaaa",
|
||||
"tenantId": "aaaaa",
|
||||
"type": "SystemAssigned",
|
||||
"userAssignedIdentities": {
|
||||
"key5688": {
|
||||
"principalId": "aaaaaaaaaaaaaaa",
|
||||
"clientId": "aaaaaaaaaaa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": [
|
||||
"aaaaaa"
|
||||
],
|
||||
"extendedLocation": {
|
||||
"name": "aaaa",
|
||||
"type": "EdgeZone"
|
||||
}
|
||||
}
|
||||
],
|
||||
"nextLink": "a://example.com/a"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationId": "VirtualMachines_List",
|
||||
"title": "VirtualMachine_List_MaximumSet_Gen"
|
||||
}
|
||||
@ -0,0 +1,238 @@
|
||||
{
|
||||
"value": [
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef6141",
|
||||
"name": "sitef6141",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef6141.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef6141",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef6141.azurewebsites.net",
|
||||
"sitef6141.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef6141.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef6141.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef6141.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/sites/sitef7252",
|
||||
"name": "sitef7252",
|
||||
"type": "Microsoft.Web/sites",
|
||||
"kind": "app",
|
||||
"location": "East US",
|
||||
"properties": {
|
||||
"state": "Running",
|
||||
"hostNames": [
|
||||
"sitef7252.azurewebsites.net"
|
||||
],
|
||||
"repositorySiteName": "sitef7252",
|
||||
"usageState": "Normal",
|
||||
"enabled": true,
|
||||
"enabledHostNames": [
|
||||
"sitef7252.azurewebsites.net",
|
||||
"sitef7252.scm.azurewebsites.net"
|
||||
],
|
||||
"availabilityState": "Normal",
|
||||
"hostNameSslStates": [
|
||||
{
|
||||
"name": "sitef7252.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Standard"
|
||||
},
|
||||
{
|
||||
"name": "sitef7252.scm.azurewebsites.net",
|
||||
"sslState": "Disabled",
|
||||
"hostType": "Repository"
|
||||
}
|
||||
],
|
||||
"serverFarmId": "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
|
||||
"reserved": false,
|
||||
"isXenon": false,
|
||||
"hyperV": false,
|
||||
"lastModifiedTimeUtc": "2020-03-04T17:33:11.641Z",
|
||||
"outboundVnetRouting": {
|
||||
"allTraffic": false,
|
||||
"applicationTraffic": false,
|
||||
"contentShareTraffic": false,
|
||||
"imagePullTraffic": false,
|
||||
"backupRestoreTraffic": false
|
||||
},
|
||||
"siteConfig": {
|
||||
"numberOfWorkers": 1,
|
||||
"defaultDocuments": [
|
||||
"Default.htm",
|
||||
"Default.html",
|
||||
"Default.asp",
|
||||
"index.htm",
|
||||
"index.html",
|
||||
"iisstart.htm",
|
||||
"default.aspx",
|
||||
"index.php",
|
||||
"hostingstart.html"
|
||||
],
|
||||
"netFrameworkVersion": "v4.0",
|
||||
"phpVersion": "5.6",
|
||||
"pythonVersion": "",
|
||||
"nodeVersion": "",
|
||||
"powerShellVersion": "",
|
||||
"linuxFxVersion": "",
|
||||
"requestTracingEnabled": false,
|
||||
"remoteDebuggingEnabled": false,
|
||||
"httpLoggingEnabled": false,
|
||||
"acrUseManagedIdentityCreds": false,
|
||||
"logsDirectorySizeLimit": 35,
|
||||
"detailedErrorLoggingEnabled": false,
|
||||
"use32BitWorkerProcess": true,
|
||||
"webSocketsEnabled": false,
|
||||
"alwaysOn": false,
|
||||
"appCommandLine": "",
|
||||
"managedPipelineMode": "Integrated",
|
||||
"virtualApplications": [
|
||||
{
|
||||
"virtualPath": "/",
|
||||
"physicalPath": "site\\wwwroot",
|
||||
"preloadEnabled": false
|
||||
}
|
||||
],
|
||||
"loadBalancing": "LeastRequests",
|
||||
"autoHealEnabled": false,
|
||||
"vnetName": "",
|
||||
"vnetRouteAllEnabled": false,
|
||||
"vnetPrivatePortsCount": 0,
|
||||
"http20Enabled": false,
|
||||
"minTlsVersion": "1.2",
|
||||
"scmMinTlsVersion": "1.2",
|
||||
"ftpsState": "AllAllowed",
|
||||
"functionAppScaleLimit": 0,
|
||||
"functionsRuntimeScaleMonitoringEnabled": false,
|
||||
"minimumElasticInstanceCount": 0,
|
||||
"azureStorageAccounts": {}
|
||||
},
|
||||
"scmSiteAlsoStopped": false,
|
||||
"clientAffinityEnabled": true,
|
||||
"clientCertEnabled": false,
|
||||
"clientCertMode": "Required",
|
||||
"hostNamesDisabled": false,
|
||||
"customDomainVerificationId": "7F3BB652450EF7AD0B6AA33064586E4A9CE823A46DF0B2EC6443A68086E84153",
|
||||
"outboundIpAddresses": "203.0.113.201,198.51.100.144",
|
||||
"possibleOutboundIpAddresses": "203.0.113.201,198.51.100.144,203.0.113.122,198.51.100.188",
|
||||
"containerSize": 0,
|
||||
"dailyMemoryTimeQuota": 0,
|
||||
"resourceGroup": "testrg123",
|
||||
"defaultHostName": "sitef7252.azurewebsites.net",
|
||||
"httpsOnly": false,
|
||||
"redundancyMode": "None",
|
||||
"storageAccountRequired": false,
|
||||
"keyVaultReferenceIdentity": "SystemAssigned",
|
||||
"workloadProfileName": "myd4wp",
|
||||
"resourceConfig": {
|
||||
"cpu": 1,
|
||||
"memory": "2.0Gi"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
[
|
||||
{
|
||||
"kind": "compute#instance",
|
||||
"id": "4218766341062832345",
|
||||
"creationTimestamp": "2026-10-01T08:12:03.512-07:00",
|
||||
"name": "api-1",
|
||||
"description": "",
|
||||
"tags": {
|
||||
"items": [
|
||||
"http-server"
|
||||
],
|
||||
"fingerprint": "Qm9vdHN0cmFw"
|
||||
},
|
||||
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/machineTypes/e2-standard-2",
|
||||
"status": "RUNNING",
|
||||
"zone": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"kind": "compute#networkInterface",
|
||||
"network": "https://www.googleapis.com/compute/v1/projects/example-project/global/networks/default",
|
||||
"subnetwork": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/subnetworks/default",
|
||||
"networkIP": "10.128.0.5",
|
||||
"name": "nic0",
|
||||
"fingerprint": "bmljMA==",
|
||||
"stackType": "IPV4_ONLY"
|
||||
}
|
||||
],
|
||||
"disks": [
|
||||
{
|
||||
"kind": "compute#attachedDisk",
|
||||
"type": "PERSISTENT",
|
||||
"mode": "READ_WRITE",
|
||||
"source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/api-1",
|
||||
"deviceName": "persistent-disk-0",
|
||||
"index": 0,
|
||||
"boot": true,
|
||||
"autoDelete": true,
|
||||
"licenses": [
|
||||
"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-12-bookworm"
|
||||
],
|
||||
"interface": "SCSI",
|
||||
"guestOsFeatures": [
|
||||
{ "type": "UEFI_COMPATIBLE" },
|
||||
{ "type": "VIRTIO_SCSI_MULTIQUEUE" },
|
||||
{ "type": "GVNIC" }
|
||||
],
|
||||
"diskSizeGb": "10",
|
||||
"architecture": "X86_64"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kind": "compute#metadata",
|
||||
"fingerprint": "bWV0YWRhdGE=",
|
||||
"items": [
|
||||
{ "key": "enable-oslogin", "value": "TRUE" },
|
||||
{ "key": "ssh-keys", "value": "operator:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleExampleExampleExampleExampleExampleEx operator" },
|
||||
{ "key": "startup-script", "value": "#! /bin/bash\napt-get update\n" }
|
||||
]
|
||||
},
|
||||
"serviceAccounts": [
|
||||
{
|
||||
"email": "123456789012-compute@developer.gserviceaccount.com",
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/api-1",
|
||||
"scheduling": {
|
||||
"onHostMaintenance": "MIGRATE",
|
||||
"automaticRestart": true,
|
||||
"preemptible": false,
|
||||
"provisioningModel": "STANDARD"
|
||||
},
|
||||
"cpuPlatform": "Intel Broadwell",
|
||||
"labels": {
|
||||
"env": "prod",
|
||||
"team": "payments"
|
||||
},
|
||||
"labelFingerprint": "bGFiZWxz",
|
||||
"startRestricted": false,
|
||||
"deletionProtection": false,
|
||||
"shieldedInstanceConfig": {
|
||||
"enableSecureBoot": false,
|
||||
"enableVtpm": true,
|
||||
"enableIntegrityMonitoring": true
|
||||
},
|
||||
"shieldedInstanceIntegrityPolicy": {
|
||||
"updateAutoLearnPolicy": true
|
||||
},
|
||||
"fingerprint": "aW5zdGFuY2U=",
|
||||
"lastStartTimestamp": "2026-10-01T08:12:40.101-07:00",
|
||||
"satisfiesPzi": true
|
||||
}
|
||||
]
|
||||
@ -0,0 +1,130 @@
|
||||
[
|
||||
{
|
||||
"apiVersion": "serving.knative.dev/v1",
|
||||
"kind": "Service",
|
||||
"metadata": {
|
||||
"name": "api",
|
||||
"namespace": "123456789012",
|
||||
"selfLink": "/apis/serving.knative.dev/v1/namespaces/123456789012/services/api",
|
||||
"uid": "3f2a9c1e-5b7d-4e8f-9a0b-1c2d3e4f5a6b",
|
||||
"resourceVersion": "AAYy1ZQ0JdU",
|
||||
"generation": 3,
|
||||
"creationTimestamp": "2026-09-30T14:02:11.431902Z",
|
||||
"labels": {
|
||||
"cloud.googleapis.com/location": "europe-west1"
|
||||
},
|
||||
"annotations": {
|
||||
"run.googleapis.com/ingress": "all",
|
||||
"run.googleapis.com/ingress-status": "all",
|
||||
"serving.knative.dev/creator": "operator@example.com",
|
||||
"serving.knative.dev/lastModifier": "operator@example.com"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"template": {
|
||||
"metadata": {
|
||||
"name": "api-00003-xyz",
|
||||
"annotations": {
|
||||
"autoscaling.knative.dev/maxScale": "10",
|
||||
"run.googleapis.com/execution-environment": "gen2"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containerConcurrency": 80,
|
||||
"timeoutSeconds": 300,
|
||||
"serviceAccountName": "api-runner@example-project.iam.gserviceaccount.com",
|
||||
"containers": [
|
||||
{
|
||||
"name": "api-1",
|
||||
"image": "europe-west1-docker.pkg.dev/example-project/apps/api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
||||
"args": [
|
||||
"--port=8080"
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"name": "http1",
|
||||
"containerPort": 8080
|
||||
}
|
||||
],
|
||||
"env": [
|
||||
{
|
||||
"name": "LOG_LEVEL",
|
||||
"value": "info"
|
||||
},
|
||||
{
|
||||
"name": "DB_PASSWORD",
|
||||
"valueFrom": {
|
||||
"secretKeyRef": {
|
||||
"key": "latest",
|
||||
"name": "db-password"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "1000m",
|
||||
"memory": "512Mi"
|
||||
}
|
||||
},
|
||||
"volumeMounts": [
|
||||
{
|
||||
"name": "cache",
|
||||
"mountPath": "/cache"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "cache",
|
||||
"emptyDir": {
|
||||
"medium": "Memory",
|
||||
"sizeLimit": "128Mi"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"traffic": [
|
||||
{
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"observedGeneration": 3,
|
||||
"conditions": [
|
||||
{
|
||||
"type": "Ready",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
},
|
||||
{
|
||||
"type": "ConfigurationsReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:20.113005Z"
|
||||
},
|
||||
{
|
||||
"type": "RoutesReady",
|
||||
"status": "True",
|
||||
"lastTransitionTime": "2026-10-10T09:15:22.870111Z"
|
||||
}
|
||||
],
|
||||
"latestReadyRevisionName": "api-00003-xyz",
|
||||
"latestCreatedRevisionName": "api-00003-xyz",
|
||||
"traffic": [
|
||||
{
|
||||
"revisionName": "api-00003-xyz",
|
||||
"percent": 100,
|
||||
"latestRevision": true
|
||||
}
|
||||
],
|
||||
"url": "https://api-abc123-ew.a.run.app",
|
||||
"address": {
|
||||
"url": "https://api-abc123-ew.a.run.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
120
verify-layer/proba-adaptoare-cloud.mjs
Normal file
120
verify-layer/proba-adaptoare-cloud.mjs
Normal file
@ -0,0 +1,120 @@
|
||||
'use strict';
|
||||
// proba-adaptoare-cloud.mjs (B15, 2026-10-18): proba adaptoarelor pe furnizori de cloud ale sidecar-ului (scan --source aws-ecs | aws-ec2 |
|
||||
// aws-lambda | azure-vm | azure-container | azure-containerapp | azure-webapp | gcp-compute | gcp-run), pe fixturile DERIVATE din
|
||||
// documentatia oficiala a fiecarui CLI (fixturi-cloud/). Pentru fiecare adaptor:
|
||||
// 1 exportul documentat -> exact incarcaturile care RULEAZA, cu identitatile asteptate (nume si versiune in plic)
|
||||
// 2 CONFIDENTIALITATE: valorile de mediu plantate (si customData/userData) NU apar nici in jurnal, nici in descriptori; NUMELE da
|
||||
// 3 incarcatura OPRITA din varianta `.oprita` NU intra (acelasi numar de intrari, numele ei lipseste din tot ce s-a scris)
|
||||
// 4 exportul ALTUI CLI e refuzat PE NUME (mesajul numeste comanda asteptata), nimic scris
|
||||
// 5 fiecare descriptor re-hashat (canonic, chei sortate la toate nivelurile) = digestul din plicul lui din lant
|
||||
// 6 fiecare plic e VALID pentru verificatorul AIP-23 comun (AERE_VERIFY_PROOF; altfel SARIT, cod 2)
|
||||
// plus: fixturile de pe disc sunt cele derivate; o sursa necunoscuta e refuzata; ECS fara definitii spune `not-in-export`; `az vm list`
|
||||
// fara -d si `az container list` fara instanceView sunt refuzate pe nume; referinta ARN a unui secret ECS si cheile Azure de retea nu intra.
|
||||
// node proba-adaptoare-cloud.mjs -> 0 toate cum trebuia, 1 cel putin una rea, 2 cel putin una SARITA
|
||||
// Mediu: AERE_SIDECAR_MODUL (copia masurata, pentru controlul negativ), AERE_VERIFY_PROOF (verificatorul AIP-23).
|
||||
// NEMASURAT aici, spus si in fixturi-cloud/README.md: iesirea unui CONT REAL la oricare furnizor; nu avem conturi.
|
||||
|
||||
import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import crypto from 'node:crypto';
|
||||
import { execFileSync } from 'node:child_process'; import { fileURLToPath, pathToFileURL } from 'node:url';
|
||||
|
||||
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||
const SIDE = process.env.AERE_SIDECAR_MODUL ? path.resolve(process.env.AERE_SIDECAR_MODUL) : path.join(AICI, 'sidecar.mjs');
|
||||
const VERIFY = process.env.AERE_VERIFY_PROOF ? path.resolve(process.env.AERE_VERIFY_PROOF) : path.resolve(AICI, '..', 'aere-proof-protocol', 'verify.mjs');
|
||||
const areVerificator = fs.existsSync(VERIFY);
|
||||
const FX = path.join(AICI, 'fixturi-cloud');
|
||||
const { deriva, text: textFixtura, SECRET, SECRET_DATE } = await import(pathToFileURL(path.join(FX, 'deriva.mjs')).href);
|
||||
const T = fs.mkdtempSync(path.join(os.tmpdir(), 'avl-cloud-'));
|
||||
let rele = 0, bune = 0, sarite = 0;
|
||||
const cer = (n, c) => { console.log(` [${c ? 'OK ' : 'RAU '}] ${n}`); if (c) bune++; else rele++; };
|
||||
const sari = (n) => { console.log(` [SARIT] ${n} (verificatorul AIP-23 nu e la ${VERIFY}; dati AERE_VERIFY_PROOF)`); sarite++; };
|
||||
function side(args) { try { return { cod: 0, out: execFileSync(process.execPath, [SIDE, ...args], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }) }; } catch (e) { return { cod: e.status ?? 1, out: (e.stdout || '') + (e.stderr || '') }; } }
|
||||
const linii = (p) => (fs.existsSync(p) ? fs.readFileSync(p, 'utf8').split('\n').filter((l) => l.trim()).map((l) => JSON.parse(l)) : []);
|
||||
const textul = (p) => (fs.existsSync(p) ? fs.readFileSync(p, 'utf8') : '');
|
||||
const valid = (f) => { try { execFileSync(process.execPath, [VERIFY, f], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }); return true; } catch { return false; } };
|
||||
// re-derivarea canonica, scrisa AICI, nu importata: chei sortate la toate nivelurile
|
||||
const canon = (v) => (Array.isArray(v) ? '[' + v.map(canon).join(',') + ']' : v && typeof v === 'object' ? '{' + Object.keys(v).sort().map((k) => JSON.stringify(k) + ':' + canon(v[k])).join(',') + '}' : JSON.stringify(v));
|
||||
const shaCanon = (o) => '0x' + crypto.createHash('sha256').update(Buffer.from(canon(o), 'utf8')).digest('hex');
|
||||
const F = (f) => path.join(FX, f);
|
||||
const egal = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
||||
const scan = (src, fixtura, log, extra = []) => side(['scan', '--source', src, '--input', F(fixtura), '--host', 'h', '--log', log, '--at', '2026-10-18T10:00:00Z', ...extra]);
|
||||
|
||||
// pentru fiecare adaptor: exportul, identitatile asteptate (din fixtura documentata), numele variabilelor plantate, marcajul incarcaturii oprite,
|
||||
// exportul altui CLI si comanda pe care refuzul trebuie sa o numeasca
|
||||
const H64 = '0123456789abcdef'.repeat(4);
|
||||
const A = [
|
||||
{ src: 'aws-ecs', extra: ['--task-definitions', F('aws-ecs.definitii.json')], extraSecrete: ['--task-definitions', F('aws-ecs.secrete.definitii.json')],
|
||||
nume: ['ecs:MyCluster/4d590253bb114126b7afa7b58eea9221/simple-app'], versiuni: ['httpd:2.4'], numeEnv: ['API_TOKEN', 'HTTPD_PORT'], numePlantate: ['DB_PASSWORD', 'OVERRIDE_TOKEN'],
|
||||
oprit: '0000000000000000000000oprita', altCli: 'aws-ec2.json', refuz: 'aws ecs describe-tasks' },
|
||||
{ src: 'aws-ec2', nume: ['ec2:us-east-2/i-1234567890abcdef0'], versiuni: ['ami-0abcdef1234567890'], numeEnv: ['Name'], numePlantate: ['DB_PASSWORD'], oprit: 'i-0000000000oprita00', altCli: 'aws-lambda.json', refuz: 'aws ec2 describe-instances' },
|
||||
{ src: 'aws-lambda', nume: ['lambda:us-west-2/helloworld', 'lambda:us-west-2/my-function', 'lambda:us-west-2/my-python-function'],
|
||||
versiuni: ['dBG9m8SGdmlEjw/JYXlhhvCrAv5TxvXsbL/RMr0fT/I=', 'sU0cJ2/hOZevwV/lTxCuQqK3gDZP3i8gUoqUUVRmY6E=', 'ZQukCqxtkqFgyF2cU41Avj99TKQ/hNihPtDtRcc08mI='],
|
||||
numeEnv: [], numePlantate: ['DB_PASSWORD', 'LOG_LEVEL'], oprit: 'inactive-function', altCli: 'aws-ecs.json', refuz: 'aws lambda list-functions' },
|
||||
{ src: 'azure-vm', nume: ['azvm:{resourceGroupName}/{virtualMachineName}', 'azvm:{resourceGroupName}/{virtualMachineName}'], versiuni: ['aaaaaaaaaaaaa', 'aa'], numeEnv: [], numePlantate: ['DB_PASSWORD', 'env'],
|
||||
plantateInPlus: [SECRET_DATE], oprit: 'vm-oprita', altCli: 'azure-container.json', refuz: 'az vm list -d' },
|
||||
{ src: 'azure-container', nume: ['aci:demo/demo1/demo1'], versiuni: ['nginx'], numeEnv: [], numePlantate: ['API_KEY', 'DB_PASSWORD'], oprit: 'demo2', altCli: 'azure-vm.json', refuz: 'az container list' },
|
||||
{ src: 'azure-containerapp', nume: ['aca:rg/testcontainerApp0/testcontainerApp0'], versiuni: ['repo/testcontainerApp0:v4'], numeEnv: [], numePlantate: ['API_KEY', 'DB_PASSWORD'], oprit: 'testcontainerApp1', altCli: 'azure-webapp.json', refuz: 'az containerapp list' },
|
||||
{ src: 'azure-webapp', nume: ['azwebapp:testrg123/sitef6141', 'azwebapp:testrg123/sitef7252'], versiuni: ['mcr.microsoft.com/appsvc/staticsite:latest', '?'], numeEnv: [], numePlantate: ['DB_PASSWORD', 'WEBSITES_PORT'],
|
||||
oprit: 'sitef0000', altCli: 'azure-containerapp.json', refuz: 'az webapp list --show-details' },
|
||||
{ src: 'gcp-compute', nume: ['gce:us-central1-a/api-1'], versiuni: ['4218766341062832345'], numeEnv: ['enable-oslogin', 'ssh-keys', 'startup-script'], numePlantate: ['user-data'], oprit: 'api-2', altCli: 'gcp-run.json', refuz: 'gcloud compute instances list --format=json' },
|
||||
{ src: 'gcp-run', nume: ['run:europe-west1/api/api-1'], versiuni: ['sha256:' + H64], numeEnv: ['DB_PASSWORD', 'LOG_LEVEL'], numePlantate: ['DB_PASSWORD_PLAIN'], oprit: '"batch"', altCli: 'gcp-compute.json', refuz: 'gcloud run services list --format=json' },
|
||||
];
|
||||
|
||||
try {
|
||||
// fixturile de pe disc sunt EXACT cele derivate din surse (altfel proba ar masura un fisier editat de mana)
|
||||
const derivate = deriva(); const difera = Object.entries(derivate).filter(([f, o]) => textul(F(f)) !== textFixtura(o)).map(([f]) => f);
|
||||
cer(`fixturile de pe disc sunt cele derivate de deriva.mjs (${Object.keys(derivate).length} fisiere)`, difera.length === 0 && Object.keys(derivate).length >= 27);
|
||||
cer('CONTROL: o sursa necunoscuta e refuzata (cod 2) si uzanta numeste toate sursele', (() => { const r = side(['scan', '--source', 'aws-foo', '--input', F('aws-ecs.json'), '--log', path.join(T, 'foo.log')]); return r.cod === 2 && A.every((a) => r.out.includes(a.src)) && !fs.existsSync(path.join(T, 'foo.log')); })());
|
||||
|
||||
const plicuri = [];
|
||||
for (const a of A) {
|
||||
const P = (s) => `${a.src}: ${s}`;
|
||||
// 1: exportul documentat -> incarcaturile care ruleaza, identitatile exacte
|
||||
const log = path.join(T, a.src + '.log'); const des = log + '.descriptori.jsonl';
|
||||
const r1 = scan(a.src, a.src + '.json', log, a.extra || []);
|
||||
const L = linii(log); const D = linii(des);
|
||||
const numeScrise = D.map((d) => d.name); const numeInPlic = L.map((e) => e.proof.statement.name);
|
||||
cer(P(`exportul documentat -> ${a.nume.length} intrari, identitatile exacte (${a.nume.map((n, i) => `${n}@${a.versiuni[i]}`).join(', ')})`),
|
||||
r1.cod === 0 && L.length === a.nume.length && egal(numeScrise, a.nume) && egal(numeInPlic, a.nume.map((n, i) => `h/${n}@${a.versiuni[i]}`)));
|
||||
// 5: re-hash
|
||||
cer(P('descriptorii re-hashati (canonic, adanc) = digestul din plicurile lantului'), D.length === L.length && D.length > 0 && D.every((d) => shaCanon(d.descriptor) === d.sha256 && L[d.seq].proof.statement.sha256 === d.sha256));
|
||||
if (a.numeEnv.length) cer(P(`control pozitiv: numele documentate (${a.numeEnv.join(', ')}) sunt in descriptori`), a.numeEnv.every((n) => textul(des).includes(`"${n}"`)));
|
||||
for (const e of L) plicuri.push({ src: a.src, f: path.join(T, `${a.src}-${e.seq}.json`), p: e.proof });
|
||||
// 2: confidentialitate, pe varianta cu valori plantate
|
||||
const logS = path.join(T, a.src + '.secrete.log'); const desS = logS + '.descriptori.jsonl';
|
||||
const r2 = scan(a.src, a.src + '.secrete.json', logS, a.extraSecrete || a.extra || []);
|
||||
const tot = textul(logS) + textul(desS); const plantate = [SECRET, ...(a.plantateInPlus || [])];
|
||||
cer(P(`CONFIDENTIALITATE: valorile plantate NU apar nici in jurnal, nici in descriptori; NUMELE (${a.numePlantate.join(', ')}) da`),
|
||||
r2.cod === 0 && linii(logS).length === a.nume.length && plantate.every((s) => !tot.includes(s)) && a.numePlantate.every((n) => textul(desS).includes(`"${n}"`)));
|
||||
// 3: incarcatura oprita nu intra
|
||||
const logO = path.join(T, a.src + '.oprita.log'); const r3 = scan(a.src, a.src + '.oprita.json', logO, a.extra || []);
|
||||
const totO = textul(logO) + textul(logO + '.descriptori.jsonl');
|
||||
cer(P(`incarcatura OPRITA (${a.oprit}) NU intra: tot atatea intrari ca fara ea, numele ei lipseste`), r3.cod === 0 && linii(logO).length === a.nume.length && !totO.includes(a.oprit));
|
||||
// 4: exportul altui CLI, refuzat pe nume
|
||||
const logA = path.join(T, a.src + '.alt.log'); const r4 = scan(a.src, a.altCli, logA);
|
||||
cer(P(`CONTROL: export de alt CLI (${a.altCli}) refuzat PE NUME (cod 2, "not the output of \`${a.refuz}\`"), nimic scris`), r4.cod === 2 && r4.out.includes(`is not the output of \`${a.refuz}\``) && !fs.existsSync(logA));
|
||||
}
|
||||
// 6: moatul, pentru toate plicurile adaptoarelor deodata
|
||||
if (areVerificator) { let toate = true; for (const x of plicuri) { fs.writeFileSync(x.f, JSON.stringify(x.p)); if (!valid(x.f)) toate = false; } cer(`moat: fiecare plic al celor ${A.length} adaptoare (${plicuri.length}) e VALID pentru verificatorul AIP-23 comun`, toate && plicuri.length >= 13); }
|
||||
else sari(`moat: fiecare plic al celor ${A.length} adaptoare e VALID pentru verificatorul AIP-23 comun`);
|
||||
|
||||
// particularitati documentate
|
||||
{ const log = path.join(T, 'ecs-fara-def.log'); const r = scan('aws-ecs', 'aws-ecs.json', log); const d = linii(log + '.descriptori.jsonl')[0]?.descriptor || {};
|
||||
cer('aws-ecs fara --task-definitions: intra, cu envSource not-in-export si envNames goale (numele stau in definitie)', r.cod === 0 && d.envSource === 'not-in-export' && egal(d.envNames, []) && d.commandSha256 === null); }
|
||||
{ const d = linii(path.join(T, 'aws-ecs.log.descriptori.jsonl'))[0]?.descriptor || {}; const t = textul(path.join(T, 'aws-ecs.log.descriptori.jsonl'));
|
||||
cer('aws-ecs cu definitii: envSource task-definition, referinta ARN a secretului (valueFrom) NU intra, montarea intra cu calea din container', d.envSource === 'task-definition' && !t.includes('secretsmanager') && egal(d.mounts, ['/usr/local/apache2/htdocs'])); }
|
||||
{ const r = scan('azure-vm', 'azure-vm.fara-d.json', path.join(T, 'vm-fara-d.log'));
|
||||
cer('CONTROL: `az vm list` fara -d (fara powerState) -> refuzat pe nume (cod 2), nimic scris', r.cod === 2 && /has no powerState/.test(r.out) && r.out.includes('az vm list -d') && !fs.existsSync(path.join(T, 'vm-fara-d.log'))); }
|
||||
{ const t = textul(path.join(T, 'azure-vm.secrete.log.descriptori.jsonl'));
|
||||
cer('azure-vm: customData, userData, adminUsername, cheile ssh si adresele (publicIps, privateIps) NU sunt chei ale descriptorului', t.length > 0 && !/"(customData|userData|adminUsername|publicKeys|publicIps|privateIps|fqdns|macAddresses)"/.test(t)); }
|
||||
{ const r = scan('azure-container', 'azure-container.fara-stare.json', path.join(T, 'aci-fara-stare.log'));
|
||||
cer('CONTROL: `az container list` fara instanceView -> refuzat pe nume (cod 2, cere `az container show`), nimic scris', r.cod === 2 && /instanceView\.currentState/.test(r.out) && r.out.includes('az container show') && !fs.existsSync(path.join(T, 'aci-fara-stare.log'))); }
|
||||
{ const d = linii(path.join(T, 'azure-webapp.log.descriptori.jsonl')).map((x) => x.descriptor);
|
||||
cer('azure-webapp: situl cu DOCKER|imagine are imageIdentity declared si imaginea; cel fara runtime in export are not-in-export', d.length === 2 && d[0].imageIdentity === 'declared' && d[0].image === 'mcr.microsoft.com/appsvc/staticsite:latest' && d[1].imageIdentity === 'not-in-export' && d[1].image === null); }
|
||||
{ const d = linii(path.join(T, 'gcp-run.log.descriptori.jsonl'))[0]?.descriptor || {};
|
||||
cer('gcp-run: imaginea data prin digest -> imageIdentity digest, regiunea din eticheta cloud.googleapis.com/location, valueFrom nu intra', d.imageIdentity === 'digest' && d.imageDigest === 'sha256:' + H64 && d.region === 'europe-west1' && !JSON.stringify(d).includes('secretKeyRef')); }
|
||||
{ const d = linii(path.join(T, 'aws-lambda.log.descriptori.jsonl')).map((x) => x.descriptor);
|
||||
cer('aws-lambda: list-functions nu poarta State -> state not-in-export, identitatea e CodeSha256 (imageIdentity codeSha256)', d.length === 3 && d.every((x) => x.state === 'not-in-export' && x.imageIdentity === 'codeSha256' && x.codeSha256)); }
|
||||
} catch (e) { console.log(` [RAU ] proba a cazut: ${e.stack || e.message}`); rele++; }
|
||||
finally { fs.rmSync(T, { recursive: true, force: true }); }
|
||||
console.log(`\nB15 adaptoare cloud: ${bune}/${bune + rele + sarite} cum trebuia${sarite ? `, ${sarite} SARITE` : ''} (sidecar: ${SIDE})`);
|
||||
process.exitCode = rele ? 1 : sarite ? 2 : 0;
|
||||
@ -18,6 +18,9 @@
|
||||
// sidecar record --kind proof --proof-file f.json (leaga orice plic AIP-23 gata facut, dupa ce ii verifica forma si integritatea)
|
||||
// sidecar scan --source docker|kubernetes --input export.json (fiecare container care RULEAZA; NUMAI numele variabilelor de mediu,
|
||||
// linia de comanda ca hash; exportul il face operatorul)
|
||||
// sidecar scan --source aws-ecs|aws-ec2|aws-lambda|azure-vm|azure-container|azure-containerapp|azure-webapp|gcp-compute|gcp-run
|
||||
// --input export.json [--task-definitions f] (B15, 2026-10-18: exportul CLI-ului furnizorului, facut de operator; aceeasi
|
||||
// forma: numai ce RULEAZA, numai NUMELE variabilelor, nicio acreditare si niciun apel la API)
|
||||
// sidecar verify-log --log p [--attested cap.json [--signer head.pub.pem]] -> 0 intreg (si continua capul atestat), 1 rupt sau necontinuat
|
||||
// sidecar attest-head --log p [--out f] [--sign-key head.key.pem] -> capul lantului ca plic AIP-23 aere-audit-head, semnat ML-DSA-65
|
||||
// sidecar keygen --out <dosar> -> cheia ML-DSA-65 cu care operatorul semneaza capetele (head.key.pem 0600, head.pub.pem)
|
||||
@ -184,6 +187,243 @@ export function descrieKubernetes(lista) {
|
||||
return out;
|
||||
}
|
||||
|
||||
// ---- adaptoarele pe furnizori de cloud (B15, 2026-10-18): ACEEASI forma, onesta ------------------------------------------------
|
||||
// Exportul il face operatorul cu CLI-ul furnizorului, cu acreditarile LUI, pe masina lui; sidecar-ul citeste fisierul si atat: nicio
|
||||
// acreditare in sidecar, niciun apel la un API. Fiecare adaptor: (1) refuza pe nume un fisier care nu e iesirea CLI-ului numit;
|
||||
// (2) ia numai incarcaturile pe care exportul le declara ca RULEAZA; (3) scrie identitatea (imagine + digest cand exportul il are,
|
||||
// altfel id-ul masinii/serviciului + imaginea declarata, `imageIdentity: 'declared'`), regiunea/zona, NUMAI numele variabilelor de
|
||||
// mediu (si ale etichetelor, setarilor, cheilor de metadata), NICIO valoare de userData/customData/metadata (nu se copiaza deloc).
|
||||
// Descriptorul e canonic (chei sortate la toate nivelurile) si devine un plic 'data' prin acelasi constructor ca Docker/Kubernetes.
|
||||
// Masurate pe iesirile DOCUMENTATE ale CLI-urilor (fixturi-cloud/), nu pe un cont real: nu avem conturi la AWS/Azure/GCP.
|
||||
const canonicAdanc = (v) => (Array.isArray(v) ? '[' + v.map((x) => canonicAdanc(x === undefined ? null : x)).join(',') + ']'
|
||||
: v && typeof v === 'object' ? '{' + Object.keys(v).filter((k) => v[k] !== undefined).sort().map((k) => JSON.stringify(k) + ':' + canonicAdanc(v[k])).join(',') + '}'
|
||||
: JSON.stringify(v === undefined ? null : v));
|
||||
const numeDin = (lista, cheie = 'name') => [...new Set((Array.isArray(lista) ? lista : []).map((e) => (e && typeof e === 'object' ? e[cheie] : e)).filter((n) => typeof n === 'string' && n))].sort();
|
||||
const ultimul = (url) => (typeof url === 'string' && url ? url.split('/').filter(Boolean).pop() || null : null);
|
||||
const grupulDin = (id) => { const m = /\/resourceGroups\/([^/]+)\//i.exec(String(id || '')); return m ? m[1] : null; };
|
||||
const digestDinImagine = (img) => { const m = /@(sha256:[0-9a-fA-F]{64})$/.exec(String(img || '')); return m ? m[1].toLowerCase() : null; };
|
||||
// az CLI scrie resursele ARM cu `properties` aplatizat; `az rest` si extensia containerapp le lasa imbricate: se citesc amandoua formele
|
||||
const aplatizat = (o) => (o && typeof o === 'object' && o.properties && typeof o.properties === 'object' ? { ...o.properties, ...o } : o);
|
||||
const intrare = (nume, version, d) => ({ name: nume, version: version || '?', content: Buffer.from(canonicAdanc(d), 'utf8') });
|
||||
|
||||
/** `aws ecs describe-tasks` (+ optional `aws ecs describe-task-definition`, una sau o lista, pentru numele variabilelor si comanda) */
|
||||
export function descrieAwsEcs(j, definitii = null) {
|
||||
if (!(!!j && !Array.isArray(j) && Array.isArray(j.tasks) /*FORMA:aws-ecs*/)) throw new Error('aws-ecs: the input is not the output of `aws ecs describe-tasks` (an object with tasks[])');
|
||||
const defs = new Map();
|
||||
for (const d of definitii == null ? [] : Array.isArray(definitii) ? definitii : [definitii]) {
|
||||
const td = d && d.taskDefinition;
|
||||
if (!(!!td && typeof td.taskDefinitionArn === 'string' && Array.isArray(td.containerDefinitions) /*FORMA:aws-ecs-definitii*/)) throw new Error('aws-ecs: --task-definitions is not the output of `aws ecs describe-task-definition` (taskDefinition.containerDefinitions[])');
|
||||
defs.set(td.taskDefinitionArn, td);
|
||||
}
|
||||
const out = [];
|
||||
for (const t of j.tasks) {
|
||||
if (!(!!t && t.lastStatus === 'RUNNING' /*RULEAZA:aws-ecs*/)) continue;
|
||||
const td = defs.get(t.taskDefinitionArn) || null;
|
||||
const region = String(t.taskArn || '').split(':')[3] || null;
|
||||
for (const c of t.containers || []) {
|
||||
// si containerul trebuie sa ruleze: un task RUNNING poate avea un container neesential deja oprit
|
||||
if (!(!!c && c.lastStatus === 'RUNNING' /*RULEAZA:aws-ecs-container*/)) continue;
|
||||
const cd = td ? td.containerDefinitions.find((x) => x && x.name === c.name) || null : null;
|
||||
const over = (t.overrides?.containerOverrides || []).find((x) => x && x.name === c.name) || null;
|
||||
const d = {
|
||||
runtime: 'aws-ecs', region, clusterArn: t.clusterArn || null, taskArn: t.taskArn || null, taskDefinitionArn: t.taskDefinitionArn || null,
|
||||
container: c.name, image: c.image || cd?.image || null, imageDigest: c.imageDigest || null, imageIdentity: c.imageDigest ? 'digest' : 'declared',
|
||||
runtimeId: c.runtimeId || null, launchType: t.launchType || null, availabilityZone: t.availabilityZone || null, startedAt: t.startedAt || null,
|
||||
group: t.group || null, taskVersion: t.version ?? null,
|
||||
commandSha256: cd ? sha256(Buffer.from(JSON.stringify([...(cd.entryPoint || []), ...(over?.command || cd.command || [])]), 'utf8')) : null,
|
||||
// numele din definitie (environment + secrets, al caror valueFrom e un ARN, nu o valoare) si din overrides; valorile nu intra
|
||||
envNames: numeDin([...(cd?.environment || []), ...(cd?.secrets || []), ...(over?.environment || [])] /*NUME:aws-ecs*/),
|
||||
envSource: td ? (over?.environment ? 'task-definition+overrides' : 'task-definition') : over?.environment ? 'overrides-only' : 'not-in-export',
|
||||
mounts: (cd?.mountPoints || []).map((m) => m && m.containerPath).filter(Boolean).sort(),
|
||||
};
|
||||
out.push(intrare(`ecs:${ultimul(t.clusterArn)}/${ultimul(t.taskArn)}/${c.name}`, c.imageDigest || c.image, d));
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `aws ec2 describe-instances` */
|
||||
export function descrieAwsEc2(j) {
|
||||
if (!(!!j && !Array.isArray(j) && Array.isArray(j.Reservations) /*FORMA:aws-ec2*/)) throw new Error('aws-ec2: the input is not the output of `aws ec2 describe-instances` (an object with Reservations[])');
|
||||
const out = [];
|
||||
for (const r of j.Reservations) for (const i of r?.Instances || []) {
|
||||
if (!(!!i && i.State?.Name === 'running' /*RULEAZA:aws-ec2*/)) continue;
|
||||
const zona = i.Placement?.AvailabilityZone || null; const region = zona ? zona.replace(/[a-z]$/, '') : null;
|
||||
// userData nu e in describe-instances si nu se cere; valorile etichetelor nu intra (o eticheta poate purta orice)
|
||||
const d = {
|
||||
runtime: 'aws-ec2', region, availabilityZone: zona, instanceId: i.InstanceId || null, imageId: i.ImageId || null, imageIdentity: 'declared',
|
||||
instanceType: i.InstanceType || null, architecture: i.Architecture || null, platformDetails: i.PlatformDetails || null, virtualizationType: i.VirtualizationType || null,
|
||||
bootMode: i.BootMode || null, launchTime: i.LaunchTime || null, iamInstanceProfileArn: i.IamInstanceProfile?.Arn || null, rootDeviceType: i.RootDeviceType || null,
|
||||
imdsV2Required: i.MetadataOptions ? i.MetadataOptions.HttpTokens === 'required' : null, tagKeys: numeDin(i.Tags, 'Key' /*NUME:aws-ec2*/),
|
||||
};
|
||||
out.push(intrare(`ec2:${region}/${i.InstanceId}`, i.ImageId, d));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `aws lambda list-functions`: list-functions nu intoarce State (nota din documentatia lui); o functie e inregistrata ca desfasurata,
|
||||
* cu `state: 'not-in-export'`; daca exportul poarta State (get-function-configuration), numai `Active` intra */
|
||||
export function descrieAwsLambda(j) {
|
||||
if (!(!!j && !Array.isArray(j) && Array.isArray(j.Functions) /*FORMA:aws-lambda*/)) throw new Error('aws-lambda: the input is not the output of `aws lambda list-functions` (an object with Functions[])');
|
||||
const out = [];
|
||||
for (const f of j.Functions) {
|
||||
if (!(!!f && (f.State === undefined || f.State === 'Active') /*RULEAZA:aws-lambda*/)) continue;
|
||||
const region = String(f.FunctionArn || '').split(':')[3] || null;
|
||||
const d = {
|
||||
runtime: 'aws-lambda', region, functionArn: f.FunctionArn || null, functionName: f.FunctionName || null, packageType: f.PackageType || 'Zip',
|
||||
functionRuntime: f.Runtime || null, handler: f.Handler || null, codeSha256: f.CodeSha256 || null, imageIdentity: f.CodeSha256 ? 'codeSha256' : 'declared',
|
||||
codeSize: f.CodeSize ?? null, lastModified: f.LastModified || null, functionVersion: f.Version || null, revisionId: f.RevisionId || null,
|
||||
architectures: [...(f.Architectures || [])].sort(), layers: numeDin(f.Layers, 'Arn'), state: f.State ?? 'not-in-export',
|
||||
envNames: Object.keys(f.Environment?.Variables || {}).sort() /*NUME:aws-lambda*/,
|
||||
};
|
||||
out.push(intrare(`lambda:${region}/${f.FunctionName}`, f.CodeSha256, d));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `az vm list -d` (--show-details adauga powerState; fara el exportul nu spune daca masina merge, si e refuzat) */
|
||||
export function descrieAzureVm(j) {
|
||||
if (!(Array.isArray(j) && j.every((v) => v && typeof v.id === 'string' && /\/providers\/Microsoft\.Compute\/virtualMachines\//i.test(v.id)) /*FORMA:azure-vm*/)) throw new Error('azure-vm: the input is not the output of `az vm list -d` (an array of Microsoft.Compute/virtualMachines resources)');
|
||||
const vms = j.map(aplatizat);
|
||||
if (!(vms.length === 0 || vms.some((v) => typeof v.powerState === 'string') /*FORMA:azure-vm-d*/)) throw new Error('azure-vm: the export has no powerState: run `az vm list -d` (--show-details), which adds the power state of each machine');
|
||||
const out = [];
|
||||
for (const v of vms) {
|
||||
if (!(v.powerState === 'VM running' /*RULEAZA:azure-vm*/)) continue;
|
||||
const ir = v.storageProfile?.imageReference || {}; const rg = v.resourceGroup || grupulDin(v.id);
|
||||
// customData, userData, adminUsername, cheile ssh, adresele: nu se copiaza; etichetele intra numai cu numele
|
||||
const d = {
|
||||
runtime: 'azure-vm', id: v.id, name: v.name || null, resourceGroup: rg, location: v.location || null, zones: [...(v.zones || [])].sort(), vmId: v.vmId || null,
|
||||
vmSize: v.hardwareProfile?.vmSize || null,
|
||||
imageReference: Object.fromEntries(['publisher', 'offer', 'sku', 'version', 'exactVersion', 'id', 'sharedGalleryImageId', 'communityGalleryImageId'].filter((k) => ir[k] != null).map((k) => [k, ir[k]])),
|
||||
imageIdentity: 'declared', osType: v.storageProfile?.osDisk?.osType || null, computerName: v.osProfile?.computerName || null,
|
||||
provisioningState: v.provisioningState || null, powerState: v.powerState, timeCreated: v.timeCreated || null, tagKeys: Object.keys(v.tags || {}).sort() /*NUME:azure-vm*/,
|
||||
};
|
||||
out.push(intrare(`azvm:${rg}/${v.name}`, ir.exactVersion || ir.version || ir.id, d));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `az container list` / `az container show` (Azure Container Instances): starea fiecarui container e in instanceView.currentState */
|
||||
export function descrieAzureContainer(j) {
|
||||
if (!(Array.isArray(j) && j.every((g) => g && typeof g.id === 'string' && /\/providers\/Microsoft\.ContainerInstance\/containerGroups\//i.test(g.id)) /*FORMA:azure-container*/)) throw new Error('azure-container: the input is not the output of `az container list` or `az container show` (an array of Microsoft.ContainerInstance/containerGroups resources)');
|
||||
const out = []; let cuStare = 0;
|
||||
for (const g0 of j) {
|
||||
const g = aplatizat(g0); const rg = g.resourceGroup || grupulDin(g.id);
|
||||
for (const c0 of g.containers || []) {
|
||||
const c = aplatizat(c0); const st = c.instanceView?.currentState || null; if (st) cuStare++;
|
||||
if (!(!!st && st.state === 'Running' /*RULEAZA:azure-container*/)) continue;
|
||||
// environmentVariables intra cu numele (value si secureValue nu), imageRegistryCredentials nu intra deloc
|
||||
const d = {
|
||||
runtime: 'azure-container', groupId: g.id, group: g.name || null, resourceGroup: rg, location: g.location || null, zones: [...(g.zones || [])].sort(), osType: g.osType || null,
|
||||
provisioningState: g.provisioningState || null, container: c.name || null, image: c.image || null, imageDigest: digestDinImagine(c.image), imageIdentity: digestDinImagine(c.image) ? 'digest' : 'declared',
|
||||
commandSha256: sha256(Buffer.from(JSON.stringify(c.command || []), 'utf8')), envNames: numeDin(c.environmentVariables /*NUME:azure-container*/),
|
||||
mounts: (c.volumeMounts || []).map((m) => m && m.mountPath).filter(Boolean).sort(), startedAt: st.startTime || null, restartCount: c.instanceView?.restartCount ?? null,
|
||||
};
|
||||
out.push(intrare(`aci:${rg}/${g.name}/${c.name}`, digestDinImagine(c.image) || c.image, d));
|
||||
}
|
||||
}
|
||||
if (j.length && cuStare === 0) throw new Error('azure-container: no container in the export carries instanceView.currentState (`az container list` may omit it): collect `az container show -g <group> -n <name> -o json` outputs into a JSON array');
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `az containerapp list` (Azure Container Apps): runningStatus e al aplicatiei; numai `Running` intra (Progressing, Stopped, Suspended
|
||||
* si `Ready`, pe care specificatia il enumera fara sa il defineasca, nu); initContainers nu intra (nu ruleaza continuu) */
|
||||
export function descrieAzureContainerApp(j) {
|
||||
if (!(Array.isArray(j) && j.every((a) => a && typeof a.id === 'string' && /\/providers\/Microsoft\.App\/containerApps\//i.test(a.id)) /*FORMA:azure-containerapp*/)) throw new Error('azure-containerapp: the input is not the output of `az containerapp list` (an array of Microsoft.App/containerApps resources)');
|
||||
const out = [];
|
||||
for (const a0 of j) {
|
||||
const a = aplatizat(a0);
|
||||
if (!(a.runningStatus === 'Running' /*RULEAZA:azure-containerapp*/)) continue;
|
||||
const rg = a.resourceGroup || grupulDin(a.id);
|
||||
for (const c of a.template?.containers || []) {
|
||||
if (!c) continue;
|
||||
// env intra cu numele; secretRef e numele unui secret, nu valoarea lui; configuration.secrets nu se citeste deloc
|
||||
const d = {
|
||||
runtime: 'azure-containerapp', appId: a.id, app: a.name || null, resourceGroup: rg, location: a.location || null, environmentId: a.environmentId || a.managedEnvironmentId || null,
|
||||
provisioningState: a.provisioningState || null, runningStatus: a.runningStatus, latestReadyRevisionName: a.latestReadyRevisionName || null, latestRevisionName: a.latestRevisionName || null,
|
||||
workloadProfileName: a.workloadProfileName || null, container: c.name || null, image: c.image || null, imageDigest: digestDinImagine(c.image), imageIdentity: digestDinImagine(c.image) ? 'digest' : 'declared',
|
||||
commandSha256: sha256(Buffer.from(JSON.stringify([...(c.command || []), ...(c.args || [])]), 'utf8')), envNames: numeDin(c.env /*NUME:azure-containerapp*/), envSecretRefs: numeDin(c.env, 'secretRef'),
|
||||
mounts: (c.volumeMounts || []).map((m) => m && m.mountPath).filter(Boolean).sort(),
|
||||
};
|
||||
out.push(intrare(`aca:${rg}/${a.name}/${c.name}`, digestDinImagine(c.image) || c.image, d));
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `az webapp list --show-details` (App Service): state e al sitului; runtime-ul e linuxFxVersion/windowsFxVersion (DOCKER|imagine
|
||||
* pentru un container); appSettings si connectionStrings intra numai cu numele (API-ul le ascunde oricum la citirile obisnuite) */
|
||||
export function descrieAzureWebapp(j) {
|
||||
if (!(Array.isArray(j) && j.every((s) => s && typeof s.id === 'string' && /\/providers\/Microsoft\.Web\/sites\//i.test(s.id)) /*FORMA:azure-webapp*/)) throw new Error('azure-webapp: the input is not the output of `az webapp list --show-details` (an array of Microsoft.Web/sites resources)');
|
||||
const out = [];
|
||||
for (const s0 of j) {
|
||||
const s = aplatizat(s0);
|
||||
if (!(s.state === 'Running' /*RULEAZA:azure-webapp*/)) continue;
|
||||
const rg = s.resourceGroup || grupulDin(s.id); const sc = s.siteConfig && typeof s.siteConfig === 'object' ? s.siteConfig : null;
|
||||
const fx = sc?.linuxFxVersion || sc?.windowsFxVersion || null; const m = /^DOCKER\|(.+)$/i.exec(fx || ''); const image = m ? m[1] : null;
|
||||
const d = {
|
||||
runtime: 'azure-webapp', id: s.id, name: s.name || null, resourceGroup: rg, location: s.location || null, kind: s.kind || null, state: s.state, defaultHostName: s.defaultHostName || null,
|
||||
fxVersion: fx, image, imageDigest: digestDinImagine(image), imageIdentity: digestDinImagine(image) ? 'digest' : fx ? 'declared' : 'not-in-export',
|
||||
lastModifiedTimeUtc: s.lastModifiedTimeUtc || null, httpsOnly: s.httpsOnly ?? null, minTlsVersion: sc?.minTlsVersion || null, siteConfigInExport: !!sc,
|
||||
appSettingNames: numeDin(sc?.appSettings /*NUME:azure-webapp*/), connectionStringNames: numeDin(sc?.connectionStrings),
|
||||
};
|
||||
out.push(intrare(`azwebapp:${rg}/${s.name}`, digestDinImagine(image) || image || fx, d));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `gcloud compute instances list --format=json`: metadata.items intra numai cu cheile (startup-script, user-data, ssh-keys stau acolo) */
|
||||
export function descrieGcpCompute(j) {
|
||||
if (!(Array.isArray(j) && j.every((i) => i && i.kind === 'compute#instance') /*FORMA:gcp-compute*/)) throw new Error('gcp-compute: the input is not the output of `gcloud compute instances list --format=json` (an array of compute#instance resources)');
|
||||
const out = [];
|
||||
for (const i of j) {
|
||||
if (!(i.status === 'RUNNING' /*RULEAZA:gcp-compute*/)) continue;
|
||||
const boot = (i.disks || []).find((d) => d && d.boot) || null; const zona = ultimul(i.zone);
|
||||
const d = {
|
||||
runtime: 'gcp-compute', id: i.id != null ? String(i.id) : null, name: i.name || null, zone: zona, machineType: ultimul(i.machineType), status: i.status, cpuPlatform: i.cpuPlatform || null,
|
||||
creationTimestamp: i.creationTimestamp || null, lastStartTimestamp: i.lastStartTimestamp || null,
|
||||
bootDisk: boot ? { source: ultimul(boot.source), licenses: (boot.licenses || []).map(ultimul).filter(Boolean).sort(), architecture: boot.architecture || null, diskSizeGb: boot.diskSizeGb ?? null } : null,
|
||||
imageIdentity: 'declared', serviceAccounts: numeDin(i.serviceAccounts, 'email'), labelKeys: Object.keys(i.labels || {}).sort(), metadataKeys: numeDin(i.metadata?.items, 'key' /*NUME:gcp-compute*/),
|
||||
selfLink: i.selfLink || null,
|
||||
};
|
||||
out.push(intrare(`gce:${zona}/${i.name}`, i.id != null ? String(i.id) : null, d));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** `gcloud run services list --format=json` (Knative Service, Cloud Run Admin API v1): ruleaza = conditia Ready e True */
|
||||
export function descrieGcpRun(j) {
|
||||
if (!(Array.isArray(j) && j.every((s) => s && s.apiVersion === 'serving.knative.dev/v1' && s.kind === 'Service') /*FORMA:gcp-run*/)) throw new Error('gcp-run: the input is not the output of `gcloud run services list --format=json` (an array of serving.knative.dev/v1 Service resources)');
|
||||
const out = [];
|
||||
for (const s of j) {
|
||||
const ready = (s.status?.conditions || []).find((c) => c && c.type === 'Ready') || null;
|
||||
if (!(!!ready && ready.status === 'True' /*RULEAZA:gcp-run*/)) continue;
|
||||
const md = s.metadata || {}; const region = md.labels?.['cloud.googleapis.com/location'] || null; const spec = s.spec?.template?.spec || {};
|
||||
(spec.containers || []).forEach((c, idx) => {
|
||||
if (!c) return;
|
||||
const nume = c.name || `container-${idx}`;
|
||||
// env intra cu numele; value si valueFrom (referinta la Secret Manager) nu
|
||||
const d = {
|
||||
runtime: 'gcp-run', service: md.name || null, namespace: md.namespace || null, region, uid: md.uid || null, generation: md.generation ?? null, observedGeneration: s.status?.observedGeneration ?? null,
|
||||
latestReadyRevisionName: s.status?.latestReadyRevisionName || null, latestCreatedRevisionName: s.status?.latestCreatedRevisionName || null, url: s.status?.url || null,
|
||||
serviceAccountName: spec.serviceAccountName || null, container: nume, image: c.image || null, imageDigest: digestDinImagine(c.image), imageIdentity: digestDinImagine(c.image) ? 'digest' : 'declared',
|
||||
commandSha256: sha256(Buffer.from(JSON.stringify([...(c.command || []), ...(c.args || [])]), 'utf8')), envNames: numeDin(c.env /*NUME:gcp-run*/),
|
||||
mounts: (c.volumeMounts || []).map((m) => m && m.mountPath).filter(Boolean).sort(), readySince: ready.lastTransitionTime || null,
|
||||
};
|
||||
out.push(intrare(`run:${region}/${md.name}/${nume}`, digestDinImagine(c.image) || s.status?.latestReadyRevisionName || c.image, d));
|
||||
});
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/** sursa -> adaptor; `aws-ecs` primeste si definitiile de task (optional) */
|
||||
export const ADAPTOARE = {
|
||||
docker: descrieDocker, kubernetes: descrieKubernetes,
|
||||
'aws-ecs': descrieAwsEcs, 'aws-ec2': descrieAwsEc2, 'aws-lambda': descrieAwsLambda,
|
||||
'azure-vm': descrieAzureVm, 'azure-container': descrieAzureContainer, 'azure-containerapp': descrieAzureContainerApp, 'azure-webapp': descrieAzureWebapp,
|
||||
'gcp-compute': descrieGcpCompute, 'gcp-run': descrieGcpRun,
|
||||
};
|
||||
|
||||
// ---- scrierea: un singur scriitor odata ----------------------------------------------------------------------------------------
|
||||
// Doi scriitori fara lacat citeau aceeasi lungime si scriau acelasi seq: lantul se rupea, si de atunci ORICE adaugare era refuzata
|
||||
// (revizuirea adversariala 2026-09-29, masurat: doi scriitori concurenti rup lantul). Lacatul e un fisier creat exclusiv langa
|
||||
@ -277,13 +517,14 @@ async function main() {
|
||||
}
|
||||
case 'scan': {
|
||||
const src = get('--source'); const f = get('--input');
|
||||
if (!['docker', 'kubernetes'].includes(src) || !f) { console.error('scan --source docker|kubernetes --input <export.json>'); return 2; }
|
||||
if (!ADAPTOARE[src] || !f) { console.error(`scan --source ${Object.keys(ADAPTOARE).join('|')} --input <export.json> [--task-definitions <describe-task-definition.json>]`); return 2; }
|
||||
let desc;
|
||||
try {
|
||||
const j = JSON.parse(fs.readFileSync(f, 'utf8'));
|
||||
desc = src === 'docker' ? descrieDocker(j) : descrieKubernetes(j);
|
||||
const td = get('--task-definitions');
|
||||
desc = src === 'aws-ecs' ? descrieAwsEcs(j, td ? JSON.parse(fs.readFileSync(td, 'utf8')) : null) : ADAPTOARE[src](j);
|
||||
} catch (e) { console.error('scan: ' + e.message); return 2; }
|
||||
if (desc.length === 0) { console.error('scan: no running container in the export; a zero is not recorded'); return 2; }
|
||||
if (desc.length === 0) { console.error('scan: no running workload (container, task, instance, function or service) in the export; a zero is not recorded'); return 2; }
|
||||
// plicul 'data' poarta numai digestul descriptorului; descriptorul insusi (fara valori de mediu, prin constructie) sta
|
||||
// alaturi, ca un auditor sa il poata re-hasha si compara cu plicul din lant; scris sub acelasi lacat
|
||||
const desFile = get('--descriptors', log + '.descriptori.jsonl');
|
||||
@ -293,7 +534,7 @@ async function main() {
|
||||
fs.appendFileSync(desFile, JSON.stringify({ seq: r.seq, name: d.name, sha256: sha256(d.content), descriptor: JSON.parse(d.content.toString('utf8')) }) + '\n');
|
||||
console.log(`recorded seq=${r.seq} ${d.name} ${String(d.version || '?').slice(0, 19)}`);
|
||||
});
|
||||
console.log(`scan ${src}: ${desc.length} running containers, ${desc.length} envelopes in ${log}, descriptors in ${desFile}`);
|
||||
console.log(`scan ${src}: ${desc.length} running ${['docker', 'kubernetes'].includes(src) ? 'containers' : 'workloads'}, ${desc.length} envelopes in ${log}, descriptors in ${desFile}`);
|
||||
return 0;
|
||||
}
|
||||
case 'verify-log': {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user