diff --git a/jupyter/examples/supply_stitch_policy/config.fab b/examples/supply_stitch_policy/config.fab similarity index 75% rename from jupyter/examples/supply_stitch_policy/config.fab rename to examples/supply_stitch_policy/config.fab index 730d97b2..55891c2d 100644 --- a/jupyter/examples/supply_stitch_policy/config.fab +++ b/examples/supply_stitch_policy/config.fab @@ -1,8 +1,6 @@ variable: - node_count: default: 1 - - vlan: - default: 3110 provider: - cloudlab: @@ -25,39 +23,35 @@ config: provider: fabric device_name: OCT-MGHPCC site: MASS + vlan_range: ['3110-3119'] peer: - profile: fabfed-stitch-v2 + profile: aes-fabfed-stitch-mass provider: cloudlab option: cluster: urn:publicid:IDN+cloudlab.umass.edu+authority+cm - interface: - - vlan: '{{ var.vlan }}' - layer3: - my_layer: subnet: 192.168.1.0/24 - gateway: 192.168.1.1 - ip_start: 192.168.1.2 - ip_end: 192.168.1.254 resource: - network: - cnet: provider: '{{cloudlab.cloudlab_provider }}' - layer3: "{{ layer3.my_layer }}" + layer3: '{{ layer3.my_layer }}' + + - fabric_network: + provider: '{{ fabric.fabric_provider }}' + layer3: '{{ layer3.my_layer }}' + stitch_with: '{{ network.cnet }}' + stitch_option: + policy: '{{ policy.my_stitch_policy }}' - node: - cloudlab_node: provider: '{{ cloudlab.cloudlab_provider }}' - network: "{{ network.cnet }}" + network: '{{ network.cnet }}' count: '{{ var.node_count }}' - - node: + - fabric_node: provider: '{{ fabric.fabric_provider }}' - network: "{{ network.fabric_network }}" + network: '{{ network.fabric_network }}' count: '{{ var.node_count }}' - - network: - - fabric_network: - provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.my_layer }}" - stitch_with: '{{ network.cnet }}' - stitch_option: - policy: '{{ policy.my_stitch_policy }}' diff --git a/fabfed/__init__.py b/fabfed/__init__.py index f28e382c..af729ea7 100644 --- a/fabfed/__init__.py +++ b/fabfed/__init__.py @@ -1 +1 @@ -__VERSION__ = "1.9b" +__VERSION__ = "1.9" diff --git a/jupyter/examples/chameleon/tacc/config.fab b/jupyter/examples/chameleon/config.fab similarity index 65% rename from jupyter/examples/chameleon/tacc/config.fab rename to jupyter/examples/chameleon/config.fab index 4adedc32..88a8ec11 100644 --- a/jupyter/examples/chameleon/tacc/config.fab +++ b/jupyter/examples/chameleon/config.fab @@ -1,3 +1,8 @@ +variable: + - site: + default: TACC #STAR + - node_count: + default: 1 provider: - fabric: - fabric_provider: @@ -10,8 +15,7 @@ provider: - janus: - janus_provider: credential_file: ~/.fabfed/fabfed_credentials.yml - profile: janus - + profile: janus config: - layer3: - my_layer: @@ -23,32 +27,34 @@ resource: - network: - chi_network: provider: '{{ chi.chi_provider }}' - name: stitch_net - layer3: "{{ layer3.my_layer }}" + layer3: '{{ layer3.my_layer }}' + # interface: + # - vlan: # If need be select a vlan TACC ['3210-3499'] # STAR ['3300-3309'] - fabric_network: provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.my_layer }}" - stitch_with: '{{ network.chi_network }}' - count: 1 - stitch_option: - site: TACC + layer3: '{{ layer3.my_layer }}' + # bw: 10 + stitch_with: + - network: '{{ network.chi_network }}' + stitch_option: + site: '{{ var.site }}' - node: - fabric_node: provider: '{{ fabric.fabric_provider }}' - count: 1 image: default_rocky_8 network: '{{ network.fabric_network }}' + count: '{{ var.node_count }}' - chi_node: provider: '{{ chi.chi_provider }}' image: CC-Ubuntu20.04 network: '{{ network.chi_network }}' - count: 1 flavor: m1.medium + count: '{{ var.node_count }}' - service: - dtn_service: provider: '{{ janus.janus_provider }}' - node: [ '{{ node.chi_node }}', '{{ node.fabric_node }}' ] + node: ['{{ node.chi_node }}', '{{ node.fabric_node }}'] controller: '{{ node.fabric_node }}' image: dtnaas/tools profile: fabfed - count: 1 + count: 0 diff --git a/jupyter/examples/chameleon/star/config.fab b/jupyter/examples/chameleon/star/config.fab deleted file mode 100644 index 260d9cae..00000000 --- a/jupyter/examples/chameleon/star/config.fab +++ /dev/null @@ -1,42 +0,0 @@ -variable: - - node_count: - default: 0 -provider: - - fabric: - - fabric_provider: - credential_file: ~/.fabfed/fabfed_credentials.yml - profile: fabric - - chi: - - chi_provider: - credential_file: ~/.fabfed/fabfed_credentials.yml - profile: chi -config: - - layer3: - - my_layer: - subnet: 192.168.100.0/24 - gateway: 192.168.100.1 - ip_start: 192.168.100.100 - ip_end: 192.168.100.250 -resource: - - network: - - chi_network: - provider: '{{ chi.chi_provider }}' - name: stitch_net - layer3: "{{ layer3.my_layer }}" - - fabric_network: - provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.my_layer }}" - stitch_with: '{{ network.chi_network }}' - stitch_option: - site: STAR - - node: - - fabric_node: - provider: '{{ fabric.fabric_provider }}' - count: '{{ var.node_count }}' - network: '{{ network.fabric_network }}' - image: default_rocky_8 - - chi_node: - provider: '{{ chi.chi_provider }}' - network: '{{ network.chi_network }}' - count: '{{ var.node_count }}' - flavor: m1.medium diff --git a/jupyter/examples/cloudlab/config.fab b/jupyter/examples/cloudlab/config.fab index 0ec13467..30de3086 100644 --- a/jupyter/examples/cloudlab/config.fab +++ b/jupyter/examples/cloudlab/config.fab @@ -1,7 +1,8 @@ variable: - - site: - default: UTAH # CLEM - + - node_count: + default: 1 + - cloulab_device: + default: CloudLab-Clemson # Utah-Cloudlab-Powder provider: - cloudlab: - cloudlab_provider: @@ -14,41 +15,39 @@ provider: - janus: - janus_provider: credential_file: ~/.fabfed/fabfed_credentials.yml - profile: janus - + profile: janus config: - layer3: - - my_layer: + - layer3_config: subnet: 192.168.1.0/24 - gateway: 192.168.1.1 - ip_start: 192.168.1.2 - ip_end: 192.168.1.254 resource: - network: - cnet: provider: '{{cloudlab.cloudlab_provider }}' - layer3: "{{ layer3.my_layer }}" + layer3: '{{ layer3.layer3_config }}' - fabric_network: provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.my_layer }}" - stitch_with: '{{ network.cnet }}' + layer3: '{{ layer3.layer3_config }}' + stitch_with: + - network: '{{ network.cnet }}' + stitch_option: + device_name: '{{ var.cloulab_device }}' - node: + - cloudlab_node: + provider: '{{ cloudlab.cloudlab_provider }}' + network: '{{ network.cnet }}' + count: '{{ var.node_count }}' - fabric_node: provider: '{{ fabric.fabric_provider }}' - site: '{{ var.site }}' - image: default_rocky_8 - nic_model: NIC_Basic - network: "{{ network.fabric_network }}" - count: 1 - - cnode: - provider: '{{ cloudlab.cloudlab_provider }}' - network: "{{ network.cnet }}" - count: 1 + # image: default_rocky_8 + # nic_model: NIC_Basic + network: '{{ network.fabric_network }}' + count: '{{ var.node_count }}' - service: - dtn_service: provider: '{{ janus.janus_provider }}' - node: [ '{{ node.cnode }}', '{{ node.fabric_node }}' ] controller: '{{ node.fabric_node }}' + node: ['{{ node.cloudlab_node }}', '{{ node.fabric_node }}'] image: dtnaas/tools profile: fabfed - count: 0 + count: 0 # SET THIS TO 1 if you want use janus service diff --git a/jupyter/examples/native-aws/config.fab b/jupyter/examples/native-aws/config.fab index a09435e2..b3d6936f 100644 --- a/jupyter/examples/native-aws/config.fab +++ b/jupyter/examples/native-aws/config.fab @@ -1,8 +1,18 @@ +variable: + - vpc: + default: 'vpc-0936b973cf039f794' # specifies the vpc + - vpc_subnet: + default: 10.0.1.0/24 + - node_count: + default: 1 + - site: + default: KANS + provider: - aws: - aws_provider: - - credential_file: ~/.fabfed/fabfed_credentials.yml - profile: aws + credential_file: ~/.fabfed/fabfed_credentials.yml + profile: aws - fabric: - fabric_provider: credential_file: ~/.fabfed/fabfed_credentials.yml @@ -11,42 +21,40 @@ config: - layer3: - fab_layer: subnet: 192.168.10.0/24 - gateway: 192.168.10.1 - ip_start: 192.168.10.2 - ip_end: 192.168.10.254 - aws_layer: - subnet: 10.0.1.0/24 + subnet: '{{ var.vpc_subnet }}' - peering: - my_peering: - # FOR FABRIC - cloud_account: "296256999979" - cloud_vpc: "vpc-0936b973cf039f794" # to test dataplane ping 10.0.1.106 (vm instance i-078a7be6f4a3df5d6) + cloud_account: '296256999979' + cloud_vpc: '{{ var.vpc }}' # to test dataplane ping 10.0.1.106 (vm instance i-078a7be6f4a3df5d6) + + # Example to point to specify an AWS facility supported by Fabric + # local_device: 'agg3.dall3' + # local_port: 'TenGigE0/0/0/13/3' + # cloud_region: 'us-east-1' remote_asn: 64512 # amazon_asn local_asn: 55038 # customer_asn - # FOR FABRIC - local_address: "192.168.1.1/30" # customer_ip - remote_address: "192.168.1.2/30" # amazon_ip + local_address: 192.168.1.1/30 # customer_ip + remote_address: 192.168.1.2/30 # amazon_ip resource: - network: - aws_net: provider: '{{ aws.aws_provider }}' - layer3: "{{ layer3.aws_layer }}" - peering: "{{ peering.my_peering }}" - stitch_with: '{{ network.fabric_network }}' - stitch_option: - device_name: agg3.ashb - + layer3: '{{ layer3.aws_layer }}' + peering: '{{ peering.my_peering }}' - fabric_network: provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.fab_layer }}" - peering: "{{ peering.my_peering }}" + layer3: '{{ layer3.fab_layer }}' + peering: '{{ peering.my_peering }}' + stitch_with: + - network: '{{ network.aws_net }}' - node: - fabric_node: provider: '{{ fabric.fabric_provider }}' - site: MAX - image: default_rocky_8 network: '{{ network.fabric_network }}' + site: '{{ var.site }}' + image: default_rocky_8 nic_model: NIC_Basic - count: 1 + count: '{{ var.node_count }}' diff --git a/jupyter/examples/native-aws/varfile.yml b/jupyter/examples/native-aws/varfile.yml index a4045c56..b2cb4105 100644 --- a/jupyter/examples/native-aws/varfile.yml +++ b/jupyter/examples/native-aws/varfile.yml @@ -1,3 +1 @@ vpc: vpc-0936b973cf039f794 -#vpc: vpc-034da8fe2c9380fec -#vpc: vpc-05bf1ae332ca8b212 \ No newline at end of file diff --git a/jupyter/examples/native-gcp/config.fab b/jupyter/examples/native-gcp/config.fab index 9b5ff7b8..b6a5534b 100644 --- a/jupyter/examples/native-gcp/config.fab +++ b/jupyter/examples/native-gcp/config.fab @@ -1,11 +1,17 @@ variable: - vpc: - default: "vpc-69acc1d9-8c24-47cd-90b8-33be57167dbf" # specifies the vpc + default: 'vpc-69acc1d9-8c24-47cd-90b8-33be57167dbf' # specifies the vpc + - vpc_subnet: + default: '10.100.0.0/24' # specify the vpc subnet + - site: + default: PSC + - node_count: + default: 1 provider: - gcp: - gcp_provider: - - credential_file: ~/.fabfed/fabfed_credentials.yml - profile: gcp + credential_file: ~/.fabfed/fabfed_credentials.yml + profile: gcp - fabric: - fabric_provider: credential_file: ~/.fabfed/fabfed_credentials.yml @@ -14,54 +20,42 @@ config: - layer3: - fab_layer: subnet: 192.168.10.0/24 - gateway: 192.168.10.1 - ip_start: 192.168.10.2 - ip_end: 192.168.10.254 - gcp_layer: - subnet: 10.100.0.0/24 # subnet.cidr and vpc.cidr + subnet: '{{ var.vpc_subnet }}' - peering: - my_peering: - # Example to override the default facility: - # Must specify local_device, local_port, and cloud_region - # local_device: "agg3.dall3" - # local_port: "Bundle-Ether110" - # cloud_region: "us-west1" - # This configuration overrides the default facility and has beed tested sucessfully with vpc-69acc1d9-8c24-47cd-90b8-33be57167dbf - # Fabric node should be able to ping the node 10.100.0.2 in tha vpc - local_device: "agg3.ashb" - local_port: "Bundle-Ether5" - cloud_region: "us-east4" + # Fabric node should be able to ping the gcp vm with ip 10.100.0.2 + # To override the default facility. Be sure to specify local_device, local_port, and cloud_region + # Example: + # local_device: 'agg3.ashb' + # local_port: 'Bundle-Ether5' + # cloud_region: 'us-east4' - # Uncomment and select a specific vlan + # Uncomment and select a specific vlan. Not really necessary. Fablib should pick an unused vlan. # cloud_vlan: # Must provide a vpc cloud_vpc: '{{ var.vpc }}' - - # Bandwidth 50, 100, 1000 - cloud_bw: 50 - + # cloud_bw: 50 remote_asn: 16550 # google_asn - local_address: "192.168.1.1/30" # customer_ip - remote_address: "192.168.1.2/30" # google_ip + local_address: 192.168.1.1/30 # customer_ip + remote_address: 192.168.1.2/30 # google_ip resource: - network: - - gcp_net: + - net: provider: '{{ gcp.gcp_provider }}' - name: gcp-net - layer3: "{{ layer3.gcp_layer }}" - peering: "{{ peering.my_peering }}" - stitch_with: '{{ network.fabric_network }}' + layer3: '{{ layer3.gcp_layer }}' + peering: '{{ peering.my_peering }}' + stitch_with: + - network: '{{ network.fabric_network }}' - fabric_network: provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.fab_layer }}" - peering: "{{ peering.my_peering }}" + layer3: '{{ layer3.fab_layer }}' + peering: '{{ peering.my_peering }}' - node: - fabric_node: provider: '{{ fabric.fabric_provider }}' - site: MAX - image: default_rocky_8 network: '{{ network.fabric_network }}' - nic_model: NIC_Basic - count: 1 + site: '{{ var.site }}' + count: '{{ var.node_count }}' diff --git a/jupyter/examples/native-gcp/varfile.yml b/jupyter/examples/native-gcp/varfile.yml index 8f43e285..de16aa8e 100644 --- a/jupyter/examples/native-gcp/varfile.yml +++ b/jupyter/examples/native-gcp/varfile.yml @@ -1,3 +1 @@ vpc: vpc-69acc1d9-8c24-47cd-90b8-33be57167dbf -#vpc: vpc-00d79c7f-debd-472e-8053-bb646c216183 -#vpc: vpc-33f21cdf-60af-4a96-bc48-3b0fb33dba5c \ No newline at end of file diff --git a/jupyter/examples/sense-aws/config.fab b/jupyter/examples/sense-aws/config.fab index 341e0ac6..0e26ef5e 100644 --- a/jupyter/examples/sense-aws/config.fab +++ b/jupyter/examples/sense-aws/config.fab @@ -1,8 +1,8 @@ provider: - sense: - sense_provider: - - credential_file: ~/.fabfed/fabfed_credentials.yml - profile: sense + credential_file: ~/.fabfed/fabfed_credentials.yml + profile: sense - fabric: - fabric_provider: credential_file: ~/.fabfed/fabfed_credentials.yml @@ -11,59 +11,52 @@ provider: - janus_provider: credential_file: ~/.fabfed/fabfed_credentials.yml profile: janus - url: "{{ node.fabric_node }}" + url: '{{ node.fabric_node }}' config: - layer3: - fab_layer: - subnet: 192.168.10.0/24 # subnet: "10.0.0.0/24" - gateway: 192.168.10.1 - ip_start: 192.168.10.2 - ip_end: 192.168.10.254 + subnet: 192.168.10.0/24 # subnet: '10.0.0.0/24' - sense_layer: - subnet: 10.200.1.0/24 # subnet.cidr and vpc.cidr + subnet: 10.202.1.0/24 # subnet.cidr and vpc.cidr - peering: - - my_peering: - # FOR FABRIC - cloud_account: "296256999979" - cloud_region: "us-east-1" - cloud_bw: 50 + - aws_peering: + cloud_account: '296256999979' + cloud_region: 'us-east-1' - # cloud_facility: - # local_device: - # local_port: + # cloud_bw: 50 # cloud_vlan: - local_asn: "55038" # customer_asn - local_address: "192.168.1.1/30" # customer_ip + # local_device: 'agg3.dall3' + # local_port: 'TenGigE0/0/0/13/3' + # cloud_region: 'us-east-1' + + local_asn: '55038' # customer_asn + local_address: 192.168.1.1/30 # customer_ip - remote_asn: "64512" # amazon_asn - remote_address: "192.168.1.2/30" # amazon_ip + remote_asn: '64512' # amazon_asn + remote_address: 192.168.1.2/30 # amazon_ip resource: - node: - sense_node: provider: '{{ sense.sense_provider }}' - network: "{{ network.sense_net }}" - count: 1 + network: '{{ network.sense_net }}' - fabric_node: provider: '{{ fabric.fabric_provider }}' - site: MAX image: default_rocky_8 - network: "{{ network.fabric_network }}" + network: '{{ network.fabric_network }}' nic_model: NIC_Basic - count: 1 + site: MASS - network: - sense_net: provider: '{{ sense.sense_provider }}' - layer3: "{{ layer3.sense_layer }}" - peering: "{{ peering.my_peering }}" - stitch_with: '{{ network.fabric_network }}' - stitch_option: - device_name: agg3.ashb - + layer3: '{{ layer3.sense_layer }}' + peering: '{{ peering.aws_peering }}' + stitch_with: + - network: '{{ network.fabric_network }}' - fabric_network: provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.fab_layer }}" - peering: "{{ peering.my_peering }}" + layer3: '{{ layer3.fab_layer }}' + peering: '{{ peering.aws_peering }}' - service: - dtn_service: provider: '{{ janus.janus_provider }}' diff --git a/jupyter/examples/sense-gcp/config.fab b/jupyter/examples/sense-gcp/config.fab index c7782c00..f69c83b4 100644 --- a/jupyter/examples/sense-gcp/config.fab +++ b/jupyter/examples/sense-gcp/config.fab @@ -1,8 +1,11 @@ +variable: + - node_count: + default: 1 provider: - sense: - sense_provider: - - credential_file: ~/.fabfed/fabfed_credentials.yml - profile: sense + credential_file: ~/.fabfed/fabfed_credentials.yml + profile: sense - fabric: - fabric_provider: credential_file: ~/.fabfed/fabfed_credentials.yml @@ -14,64 +17,54 @@ provider: config: - layer3: - fab_layer: - subnet: 192.168.10.0/24 # subnet: "10.0.0.0/24" # for sense subnet.cidr - gateway: 192.168.10.1 - ip_start: 192.168.10.2 # optional: auto generate if subnet is given - ip_end: 192.168.10.254 + subnet: 192.168.10.0/24 - sense_layer: - subnet: 10.200.1.0/24 # subnet.cidr and vpc.cidr + subnet: 10.201.1.0/24 - peering: - - my_peering: - # FOR FABRIC - # cloud_account: "296256999979" # pairing key - # cloud_facility: - # local_device: "agg3.ashb.net.internet2.edu" - # local_port: "Bundle-Ether5" - # cloud_region: "us-east4" - # cloud_vlan: + - sense_peering: + # overriding the default cloud_facility: + # local_device: 'agg3.ashb' + # local_port: 'Bundle-Ether5' + # cloud_region: 'us-east4' - # FOR SENSE and FABRIC - local_asn: "55038" # customer_asn (hard coded for now) - local_address: "192.168.1.1/16" # customer_ip (ignore) - remote_asn: "16550" # google_asn (default) - remote_address: "192.168.1.2/16" # google_ip (ignore) + # cloud_vlan: + # cloud_bw: + local_asn: '55038' # fabric asn + local_address: 192.168.1.1/30 + remote_asn: '16550' # google_asn (default) + remote_address: 192.168.1.2/30 # google_ip resource: - node: - sense_node: provider: '{{ sense.sense_provider }}' - name: gcp-node - network: "{{ network.sense_net }}" - count: 1 + network: '{{ network.sense_net }}' + count: '{{ var.node_count }}' - fabric_node: provider: '{{ fabric.fabric_provider }}' - site: MAX + site: NEWY image: default_rocky_8 - count: 1 - network: "{{ network.fabric_network }}" + network: '{{ network.fabric_network }}' nic_model: NIC_Basic + count: '{{ var.node_count }}' - network: - sense_net: provider: '{{ sense.sense_provider }}' - name: gcp-net - layer3: "{{ layer3.sense_layer }}" - peering: "{{ peering.my_peering }}" - count: 1 - profile: FABRIC-GCP-INTERCON - stitch_with: '{{ network.fabric_network }}' - profile: FABRIC-GCP-INTERCON - stitch_option: - group_name: GCP - + layer3: '{{ layer3.sense_layer }}' + peering: '{{ peering.sense_peering }}' + # profile: FABRIC-GCP-INTERCON + stitch_with: + - network: '{{ network.fabric_network }}' + stitch_option: + group_name: GCP - fabric_network: provider: '{{ fabric.fabric_provider }}' - layer3: "{{ layer3.fab_layer }}" - peering: "{{ peering.my_peering }}" - count: 1 + layer3: '{{ layer3.fab_layer }}' + peering: '{{ peering.sense_peering }}' - service: - dtn_service: provider: '{{ janus.janus_provider }}' - node: [ '{{ node.sense_node }}', '{{ node.fabric_node }}' ] + node: ['{{ node.sense_node }}', '{{ node.fabric_node }}'] controller: '{{ node.fabric_node }}' image: dtnaas/tools profile: fabfed - count: 0 # SET THIS TO 1 if you want use janus service + count: 0 # SET THIS TO 1 if you want use janus service diff --git a/jupyter/welcom.ipynb b/jupyter/welcom.ipynb index 19526dba..c28a114e 100644 --- a/jupyter/welcom.ipynb +++ b/jupyter/welcom.ipynb @@ -1,8 +1,8 @@ { "cells": [ { - "cell_type": "markdown", - "id": "f03b798d-387a-49e7-bc74-8306b8b3cbfc", + "cell_type": "raw", + "id": "886da844-3b09-41c9-9786-c07cb6921f37", "metadata": {}, "source": [ "# Welcome to FabFed\n", @@ -79,7 +79,7 @@ }, { "cell_type": "markdown", - "id": "8127923d-a615-4472-981a-fc20d01aca35", + "id": "1c628392-b440-4d00-a72d-69672122bacc", "metadata": {}, "source": [ "## Examples of FabFed Workflows\n", @@ -91,20 +91,12 @@ "- [Native aws](./native-aws.ipynb): Stiching native AWS and Fabric\n", "- [Native gcp](./native-gcp.ipynb): Stiching native GCP and Fabric\n", "- [SENSE aws](./sense-aws.ipynb): Stiching SENSE AWS and Fabric\n", - "- [SENSE gcp](./sense-gcp.ipynb): Stiching SENSE GCP and Fabric\n", - "\n", - "### Using FabFed library:\n", - "- [Native aws](./native-aws-lib.ipynb): Stiching native AWS and Fabric\n", - "- [Native gcp](./native-gcp-lib.ipynb): Stiching native GCP and Fabric\n", - "- [SENSE aws](./sense-aws-lib.ipynb): Stiching SENSE AWS and Fabric\n", - "- [SENSE gcp](./sense-gcp-lib.ipynb): Stiching SENSE GCP and Fabric\n", - "- [Cloudlab](./cloudlab-lib.ipynb): Stiching Cloudlab and Fabric\n", - "- [Chameleon](./chameleon-lib.ipynb): Stiching Chameleon and Fabric" + "- [SENSE gcp](./sense-gcp.ipynb): Stiching SENSE GCP and Fabric" ] }, { "cell_type": "markdown", - "id": "ed522844-efde-4b84-b65e-4cd263f0efeb", + "id": "bdbe3644-8ad4-46ae-b851-ff6692245eb9", "metadata": {}, "source": [ "## Tools\n", @@ -139,7 +131,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.18" + "version": "3.9.16" } }, "nbformat": 4,