home

ArticCon 2022 (continued)

transforming it

This can be as simple as a function with some nested loops. In typescript it still winds up being a nested loop, but additionally we can use the type system to enforce some guarantees around our data structures.

import { topo, peers, firewall } from './config';

export class GcpNetworkingConfig implements NetworkDefinition {
  topo = topo;
  peers = peers;
  firewall = firewall;
  config: NetworkConfig<S, N<S>>;

  constructor(project: Project) {
    this.config =

       // for vpc in topo
        [vpc]: {
          project: project.name,
          subnets: {

           // for subnet in vpc.subNets
                [subnet]: {
                  config: {
                    project: project.name,
                    ipCidrRange: this.topo[vpc].subNets[subnet].cidr,
                    gatewayAddress: this.topo[vpc].subNets[subnet].cidr,
                  },

                },
              }
            }

Previous Next
Back to talks
1. Front Page
2. intro: before we begin
3. intro: my background
4. cloud config
5. cloud config: WebUI
6. cloud config: CLI
7. cloud config: IaC
8. cloud config: cognitive load
9. terraform: at a glance
10. terraform: HCL and usage
11. terraform: modules
12. So why not just use modules?
13. cdktf: enter language bindings
14. cdktf: compatible with terraform
15. schema: configuration
16. schema: networks
17. schema: firewalls
18. schema: peers
19. schema: enforcement
20. etl: for many reasons
21. etl: current and desired state
22. arguments: sidebar
23. etl: implementation
24. etl: additional types
25. etl: facilitating abstractions
26. abstraction: implementation details
27. abstraction: example
28. abstraction: but still concrete
29. types: but why
30. demo: full