├── AJ ├── README.md ├── aj_kuftic.jpg └── github-site-BG.png ├── Archana ├── README.md ├── archana.jpeg └── github-site-BG.png ├── Bill ├── README.md ├── bill_kindle.jpeg └── github-site-BG.png ├── Billy ├── README.md ├── billy.jpg └── github-site-BG.png ├── Briana ├── Briana_Augenreich.jpg ├── README.md ├── briana_augenreich.jpeg └── github-site-BG.png ├── Briana_Augenreich.jpeg ├── Chandra ├── README.md ├── github-site-BG.png └── me.png ├── Chris ├── README.md ├── chris_arceneaux.jpeg └── github-site-BG.png ├── CodeBan_v5.jpg ├── CodeConnect-side-banner-v.2.png ├── CodeConnect-side-banner-v.3.png ├── CodeConnect-side-banner-v.4.png ├── CodeConnect-side-v1.0.png ├── Cora ├── README.md ├── cora_iberkleid.jpg └── github-site-BG.png ├── Core ├── README.md └── cora_iberkleid.jpg ├── DavidS ├── README.md ├── davidstamen.jpeg └── github-site-BG.png ├── Evan ├── README.md ├── evan.jpeg └── github-site-BG.png ├── Github1 ├── README.md ├── github-site-BG.png ├── jeremy_adams.jpeg └── steve_winton.jpeg ├── Github2 ├── README.md ├── github-site-BG.png ├── jeremy_adams.jpeg └── steve_winton.jpeg ├── Hackathon ├── README.md ├── github-site-BG.png ├── justin_sider.png └── michael_roy.jpg ├── Ivaylo ├── README.md ├── github-site-BG.png └── ivaylo_ivanov.jpg ├── JJ ├── README.md ├── github-site-BG.png └── jj.jpg ├── Jake ├── README.md ├── github-site-BG.png └── jake.jpg ├── Joe ├── README.md ├── github-site-BG.png └── joe_houghes.png ├── Johan ├── README.md ├── github-site-BG.png └── johan_va.jpg ├── Justin ├── README.md ├── Resources │ ├── CodeConNotes.txt │ ├── README.md │ ├── Sider_CodeCon2020.pptx │ ├── docker01 │ │ ├── dockerfile │ │ └── sendMail.ps1 │ ├── docker02 │ │ ├── dockerfile │ │ └── sendMail.ps1 │ ├── github-site-BG.png │ ├── report.html │ └── template.yaml ├── github-site-BG.png └── sider_head.png ├── Kit ├── README.md ├── github-site-BG.png └── kit_colbert.png ├── Kyle ├── README.md ├── github-site-BG.png └── kyle_ruddy.jpg ├── Kylie ├── README.md ├── github-site-BG.png └── kylie.jpeg ├── Luc ├── 1 Flow │ ├── ArtAPI.drawio │ ├── ArtAPI.pdf │ └── Show-Schema.ps1 ├── 2 References │ └── Links.html ├── 3 Object │ ├── Calculated-Property.ps1 │ ├── NET-example.ps1 │ └── vSphere-example.ps1 ├── 4 SOAP │ ├── 4a Basics │ │ ├── 1_GetView_vs_ExtensionData.ps1 │ │ └── 2_MoRef_Follow.ps1 │ ├── 4b Property │ │ └── 1_ScheduledTask-Info.ps1 │ ├── 4c Method │ │ ├── 1_BG-vs-wait.ps1 │ │ ├── 2_MO_VM_Consolidate_1.ps1 │ │ ├── 3_VM_Consolidate_All.ps1 │ │ └── 4_SM-AlarmManager_Clear.ps1 │ └── 4d Problems │ │ └── Vpxd_Verbose.ps1 ├── 5 REST │ ├── 5a Raw │ │ ├── 1_WebRequest_Auth.ps1 │ │ ├── 2_WebRequest_Auth.ps1 │ │ ├── 3_RestMethod_Auth.ps1 │ │ ├── 4_RestMethod_Health.ps1 │ │ ├── 5_RestMethod_DC.ps1 │ │ └── 6_RestMethod_DC_VM.ps1 │ └── 5b Services │ │ ├── 1_VM_List.ps1 │ │ └── 2_User_Create.ps1 ├── 6 Closing │ └── Takeaways.html ├── Luc-Dekens.jpg ├── README.md └── github-site-BG.png ├── Mark ├── README.md ├── github-site-BG.png └── mark_foley.jpeg ├── MichaelG ├── README.md ├── github-site-BG.png ├── michael_gasch.png ├── rafael_brito.jpeg └── resources │ ├── README.MD │ └── slides.pdf ├── MichaelR ├── README.md ├── github-site-BG.png └── mike_beardy_smile.jpg ├── Mike ├── README.md ├── github-site-BG.png └── mike.jpg ├── Pat ├── README.md ├── github-site-BG.png └── pat-gelsinger.jpg ├── Patrick ├── README.md ├── VEBA-dev-skills.pdf ├── github-site-BG.png └── patrick_kremer.jpg ├── README.md ├── Registration ├── README.md ├── code-wars-logo.png └── github-site-BG.png ├── Sajal ├── README.md ├── github-site-BG.png └── sajal_debnath.jpg ├── Sam-Tanzu ├── README.md ├── github-site-BG.png └── sam_mcgeown.jpeg ├── Sam-Traditional ├── README.md ├── github-site-BG.png └── sam_mcgeown.jpeg ├── Sam ├── Efy5NvWXgAI_s3e.jpeg ├── IMG_0221.jpeg ├── README.md └── github-site-BG.png ├── ScriptCompetition ├── Entries │ └── Readme.MD ├── README.md ├── Synatx with Logos_White.png ├── github-site-BG.png └── logocontrol.png ├── SessionSlides └── Instructions.txt ├── Sidney ├── README.md ├── github-site-BG.png └── sidney_laan.jpg ├── Troy1 ├── README.md ├── github-site-BG.png └── troy.jpg ├── Troy2 ├── README.md ├── github-site-BG.png └── troy.jpg ├── WWC ├── README.md ├── caterina.png ├── github-site-BG.png ├── jane.jpg ├── joey.jpeg └── shwetha.jpeg ├── Wayne ├── README.md ├── github-site-BG.png ├── sophie.jpg └── wayne_witzel.jpg ├── William ├── README.md ├── github-site-BG.png └── william_lam.jpg ├── Wouter-CU └── README.md ├── Wouter ├── README.md ├── VMUG_presentation_Wouter_Kursten_2020_en.pdf ├── Wouter_Kursten_New.jpg └── github-site-BG.png ├── _config.yml ├── aj_kuftic.jpg ├── calendar ├── README.md ├── code-conference-schedule.png ├── conference-schedule.png └── github-site-BG.png ├── code-banner.jpg ├── code-banner2.jpg ├── code-banner4.jpg ├── code-banner5.jpg ├── code-banner6.jpg ├── code-favicon.png ├── codeconlogo_light.png ├── codeconlogofinal_dark.jpg ├── control-up.png ├── cu2.png ├── favicon-32x32.png ├── github-banner.jpg ├── github-site-BG.png ├── github-site-BG.svg ├── github.png ├── github1.png ├── github2.png ├── hackathon ├── .DS_Store └── README.md ├── ibm.png ├── ibm2.png ├── ivaylo_ivanov.jpg ├── joe_houghes.png ├── oct1 ├── .DS_Store ├── README.md ├── Script Based Competition │ └── README.md └── vSphere and VMware Cloud on AWS Automation │ └── README.md ├── oct2 ├── .DS_Store ├── README.md ├── community-track │ └── README.md ├── tanzu-track │ ├── .DS_Store │ ├── Lets build a Kubernetes Operator in Go! │ │ └── README.md │ └── README.md └── traditional-track │ ├── .DS_Store │ └── README.md ├── sajal_debnath.jpg ├── sidney_laan.jpg ├── swag ├── README.md └── swag.jpg ├── wayne_witzel.jpg ├── welcome-banner.png ├── william_lam.jpg ├── wwc.png ├── wwc2.png ├── zoom.png ├── zoom2.png └── zoombg-final.jpg /AJ/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **How To Automate Across Enterprise and Hyperscale Clouds with Terraform and Ansible w/ AJ Kuftic** 11 | ### **Time: 2:30-3:00PM PDT** 12 |
13 | Companies are being asked to do more with less and turning to automation to deliver on those requests. This leads to challenges around collaboration and the skill set of the team to bring an automation strategy forward. Expedient’s Enterprise Cloud platform can help enable you and your team to begin your automation journey and allow you to focus on the higher value work and not day to day maintenance. AWS can provide your business with massive scalability and platforms to build new applications. With Terraform and Ansible, you can connect to either our VMware Cloud Director platform or AWS and deploy applications. In this session, we will show how to do that and leave attendees with the code to help kickstart their automation journey. 14 |

15 | Add to Calendar 16 | 17 |
18 |
19 |
20 | AJ Kuftic 21 | 22 |

AJ Kuftic is a Principal Technologist at Expedient.

23 | -------------------------------------------------------------------------------- /AJ/aj_kuftic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/AJ/aj_kuftic.jpg -------------------------------------------------------------------------------- /AJ/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/AJ/github-site-BG.png -------------------------------------------------------------------------------- /Archana/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **TinyML for Solar Panels: Bringing Edge Computing Applications to Solar Energy Systems w/ Archana Vaidheeswaran** 11 | ### **Time: 3:30-4:00PM PDT** 12 |
13 | With the advent of IoT devices, it has become essential to utilize their data and run inference on the edge. TinyML is the use of Edge devices which can be used for running machine learning models at the edge. There are several advantages of using edge computing. The field of Solar Energy Systems holds immense potential for edge computing.
In this talk, we will cover three applications of edge computing. The first application is the Estimation of Power Loss of Solar Panels. Soiling on solar panels can cause more than 30% of power loss in PV system generations. There have been some attempts in utilizing deep learning in soiling detection and the corresponding power loss estimation. However, the proposed methods costly GPU, which is not economically suitable for detecting soiling in remote solar farms. To take care of both of the accuracy and cost, this work proposes a lite model that can be implemented on edge computing devices, such as Raspberry Pi, EdgeTPU, FPGA, and VPU The second application is the continuation of the first into the detection of soiling and its classification through an opensource dataset called PV Net. The last application is solar irradiance forecasting using sky images. Real-time irradiance measurements can be found through satellite or can be obtained from ground sky images.
With edge computing, we can do quicker solar irradiance forecasting; short term forecasting up to 1 min. The work will showcase the same. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 |
21 | 22 |
23 | Archana Vaidheeswaran 24 | 25 |

Archana Vaidheeswaran is a Women Who Code fellow who has published works on neural networks and ML topics.

26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Archana/archana.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Archana/archana.jpeg -------------------------------------------------------------------------------- /Archana/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Archana/github-site-BG.png -------------------------------------------------------------------------------- /Bill/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Testing VMware ESXi Infrastructure With PowerShell/PowerCLI & Pester w/ Bill Kindle** 11 | ### **Time: 3:30-4:00PM PDT** 12 |
13 | This would be a revised session of a talk I gave at my local VMUG but would run through more VMware focused testing using Pester (see talk here).
14 | 15 | The main goal would be to demonstrate to administrators how they can leverage more PowerCLI and PowerShell to perform systems testing and validation using Pester. Testing ESXi host, VM guest, storage, networking configuration are in line with expectations prior to production launch. 16 |
17 |
18 | Check out his Github repository here with the code referenced in his presentation. 19 |
20 |
21 | Add to Calendar 22 | 23 |
24 |
25 | 26 |
27 | Bill Kindle 28 | 29 |

Bill Kindle is an experienced IT SysOps Administrator with a demonstrated history of working in the information technology and b2b services industry.
He is a Cyber Security Systems Engineer at Corsica Technologies.

30 | -------------------------------------------------------------------------------- /Bill/bill_kindle.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Bill/bill_kindle.jpeg -------------------------------------------------------------------------------- /Bill/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Bill/github-site-BG.png -------------------------------------------------------------------------------- /Billy/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Upgrade Your Automated Tests with JUnit 5 w/ Billy Korando** 11 | ### **Time: 12:30-1:00PM PDT** 12 |
13 | JUnit 5 is the latest version of the popular JUnit testing framework Java. JUnit 5, released in 2017, brought many changes with it, incorporating changes to the Java language like lambdas and streams, and also lessons learned from JUnit 4. In this presentation we will look at how to migrate existing automated testing suites to use JUnit 5 and also learn some of the benefits and new features that were introduced in JUnit 5 that you can take advantage of when you start using JUnit 5 for your automated testing! 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 | 22 |
23 | Billy Korando 24 | 25 |

Billy is a developer advocate with IBM and has over a decade of experience. Billy is passionate about helping developers find ways to reduce mental capacity waste from tedious work; such as project initiation, deployment, testing and validation, and so on through automation and good management practices. Outside of work Billy enjoy traveling, playing kickball, and having his heartbroken by cheering on the Kansas City Chiefs. Billy also co-organizes the Kansas City Java users group.

26 | 27 | -------------------------------------------------------------------------------- /Billy/billy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Billy/billy.jpg -------------------------------------------------------------------------------- /Billy/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Billy/github-site-BG.png -------------------------------------------------------------------------------- /Briana/Briana_Augenreich.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Briana/Briana_Augenreich.jpg -------------------------------------------------------------------------------- /Briana/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Discover the automation tricks and tools to managing multi-cloud environments w/ Briana Augenreich** 11 | ### **Time: 10:30-11:00AM PDT** 12 |
13 | Effectively managing multi-cloud, multi level application environments can be tricky. As our resource count, cloud providers, environment restrictions, and application complexity grows so can our headaches...unless you have the right tool set! Packer, Ansible, and Terraform have emerged as three of the top technologies for provisioning infrastructure in the cloud. They not only provide infrastructure as code but also offer elegant features to enable building streamlined multi-cloud and multi level environments. Join this session to learn how you can leverage these tools. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 |
22 | Briana Augenreich 23 | 24 |

Bri is a determined and energetic software developer with a passion for engineering excellence and increasing diversity in technology. She wears many hats in the software development lifecycle but officially calls herself a backend and infrastructure engineer. She has extensive experience delivering cloud native backend systems to service core enterprise functions and migrating legacy on-prem solutions to the cloud. She is currently a Master Software Engineer for Capital One and leads the Cloud and Python tracks for Women Who Code as a 2020 Leadership Fellow. 25 | 26 |

27 | -------------------------------------------------------------------------------- /Briana/briana_augenreich.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Briana/briana_augenreich.jpeg -------------------------------------------------------------------------------- /Briana/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Briana/github-site-BG.png -------------------------------------------------------------------------------- /Briana_Augenreich.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Briana_Augenreich.jpeg -------------------------------------------------------------------------------- /Chandra/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Unified CloudWatch monitoring for VMC workloads with AWS native services w/ Chandra Avutu** 11 | ### **Time: 1:00-1:30PM PDT** 12 |
13 | Amazon CloudWatch is a monitoring and observability service provides you with data and actionable insights to monitor your applications including VMConAWS, respond to system-wide performance changes, optimize resource utilization, and get a unified view of operational health. When customers are running VMConAWS workloads with combination of AWS native services like Amazon Aurora, Amazon Redshift or S3, customers need a unified view of monitoring and visibility into their infrastructure. This paper address how it can be achieved. Build the separate service using serverless AWS:Lambda and deploy it in customer account through CloudFormation SAM, which can fetch following data shown and store it in CloudWatch PutMetricData API. _Virtual machine guest stats:_ Amount of memory reserved for the virtual machine. Amount of memory being used by the virtual machine. Upper limit of memory available to the virtual machine. Number of memory shares assigned to the virtual machine. Number of CPU shares assigned to the virtual machine. _Virtual machine space stats:_ statname - description used - Total space used by the virtual machine snapshot - Total space used by snapshot files diskUsed - Total space used by virtual disk files shared - Total space used by shared VM files provisioned - Total provisioned space for the VM Once the VMware virtual machine metrics are available in CloudWatch you have few options: 1. You can correlate how your application is working i.e. web/app server running as virtual machine ( memory and CPU metrics ) in VMConAWS with native services include 1. Amazon Aurora as a managed database for your workloads 2. Amazon Redshift as a managed service for running analytics 3. Application Load Balancer deployed for your workloads to distribute requests 4. S3 as a object storage for storing unstructured data for VMware workloads To detect Anomaly Detection of the overall workload, you can apply CloudWatch machine-learning algorithms to continuously analyze system and application metrics, determine a normal baseline, and surface anomalies with minimal user intervention. You can use Anomaly Detection to isolate and troubleshoot unexpected changes in your metric behavior. CloudWatch Anomaly Detection will automatically determine a range of expected behavior, which you can optionally customize by specifying data exclusion periods, anomaly sensitivity. You can create alarms to notify you when anomalies occur and visualize the expected behavior on a metric graph. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 |
21 | 22 |
23 | Chandra Avutu 24 | 25 |

Chandra Avutu had worked as Staff engineer for VMware and his experience include vStorage API for storage awareness, software defined storage and distributed systems. Chandra had over twenty years of experience in system development include virtual center development from 2.0 onwards. Chandra worked on enterprise data protection systems development, open stack, VMware cloud on AWS cloud development teams. Chandra worked with CTO office people in developing software defined storage, and other projects at VMware to define storage API. In his current position at AWS Chandra work on VMware cloud on AWS.

26 | -------------------------------------------------------------------------------- /Chandra/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Chandra/github-site-BG.png -------------------------------------------------------------------------------- /Chandra/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Chandra/me.png -------------------------------------------------------------------------------- /Chris/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Exploring API-only Features of First Class Disks w/ Chris Arceneaux** 11 | ### **Time: 1:00-1:30PM PDT** 12 |
13 | In this session, we'll dive into an intro to First Class Disks, Improved Virtual Disks, Managed Virtual Disks: 14 | 19 | We'll explore API-only features, do a live demo of features using pyvmomi, outside the box thinking: 20 | 24 |

25 | Add to Calendar 26 | 27 |
28 |
29 | 30 |
31 | Chris Arceneaux 32 | 33 |

Chris Arceneaux is a Solutions Architect at Veeam Software.

34 | -------------------------------------------------------------------------------- /Chris/chris_arceneaux.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Chris/chris_arceneaux.jpeg -------------------------------------------------------------------------------- /Chris/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Chris/github-site-BG.png -------------------------------------------------------------------------------- /CodeBan_v5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/CodeBan_v5.jpg -------------------------------------------------------------------------------- /CodeConnect-side-banner-v.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/CodeConnect-side-banner-v.2.png -------------------------------------------------------------------------------- /CodeConnect-side-banner-v.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/CodeConnect-side-banner-v.3.png -------------------------------------------------------------------------------- /CodeConnect-side-banner-v.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/CodeConnect-side-banner-v.4.png -------------------------------------------------------------------------------- /CodeConnect-side-v1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/CodeConnect-side-v1.0.png -------------------------------------------------------------------------------- /Cora/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Writing a Kubernetes Validating Admission Controller w/ Cora Iberkleid** 11 | ### **Time: 9:30-10:00AM PDT** 12 |
13 | How do you control what goes into your Kubernetes cluster? How do you ensure that your users are following corporate guidelines for Kubernetes usage? How do you do all this without auditing the environment after the infraction occurred? This session by Cora Iberkleid, an Advisory Solutions Engineer at VMware, will explore how to build a validating admission controller for use with a Kubernetes cluster. In this session, you’ll learn how to deploy a Python app that can validate Kubernetes API calls and either approve or deny them. You’ll learn how to setup a Kubernetes webhook and most importantly, you’ll learn why you might want to use an admission controller in your environment. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 | 22 |
23 | Cora Iberkleid 24 | 25 |

Cora Iberkleid is part Developer Advocate, part Advisory Solutions Engineer at VMware, helping developers and enterprises navigate and adopt modern practices and technologies including Spring, Cloud Foundry, Kubernetes, VMware Tanzu, and modern CI/CD.

26 | 27 | -------------------------------------------------------------------------------- /Cora/cora_iberkleid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Cora/cora_iberkleid.jpg -------------------------------------------------------------------------------- /Cora/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Cora/github-site-BG.png -------------------------------------------------------------------------------- /Core/README.md: -------------------------------------------------------------------------------- 1 | 7 |
8 | 9 | ### **Writing a Kubernetes Validating Admission Controller w/ Cora Iberkleid** 10 | ### **Time: 9:30-10:00AM PDT** 11 |
12 | How do you control what goes into your Kubernetes cluster? How do you ensure that your users are following corporate guidelines for Kubernetes usage? How do you do all this without auditing the environment after the infraction occurred? This session by Cora Iberkleid, an Advisory Solutions Engineer at VMware, will explore how to build a validating admission controller for use with a Kubernetes cluster. In this session, you’ll learn how to deploy a Python app that can validate Kubernetes API calls and either approve or deny them. You’ll learn how to setup a Kubernetes webhook and most importantly, you’ll learn why you might want to use an admission controller in your environment. 13 |
14 |
15 | 16 |
17 |
18 | 19 | 20 |
21 | Cora Iberkleid 22 | 23 |

Cora Iberkleid is part Developer Advocate, part Advisory Solutions Engineer at VMware, helping developers and enterprises navigate and adopt modern practices and technologies including Spring, Cloud Foundry, Kubernetes, VMware Tanzu, and modern CI/CD.

24 | 25 | -------------------------------------------------------------------------------- /Core/cora_iberkleid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Core/cora_iberkleid.jpg -------------------------------------------------------------------------------- /DavidS/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Managing vSphere with Tanzu with a Custom PowerCLI Module w/ David Stamen** 11 | ### **Time: 2:00-2:30PM PDT** 12 |
13 | Learn how to leverage VMware PowerCLI to build your own PowerShell module to manage your VMware vSphere with Tanzu environment.
14 |
15 | Add to Calendar 16 | 17 |
18 |
19 |
20 | David Stamen 21 | 22 |

Meet {code} coach David! David Stamen is a Field Solutions Architect focused on VMware and Cloud solutions at Pure Storage. He blogs about all things technology at https://davidstamen.com and can be found contributing to the community at http://github.com/dstamen and on Twitter at @davidstamen

23 | 24 | 25 | -------------------------------------------------------------------------------- /DavidS/davidstamen.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/DavidS/davidstamen.jpeg -------------------------------------------------------------------------------- /DavidS/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/DavidS/github-site-BG.png -------------------------------------------------------------------------------- /Evan/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Serverless on your own terms with Knative w/ Evan Anderson** 11 | ### **Time: 10:00-11:00AM PDT** 12 |
13 | Serverless is a paradigm for enabling development teams to focus on delivering value without getting bogged down in implementation details. Kubernetes provides cross-platform infrastructure foundations to build a serverless environment, but is more of a "construction set" than a polished experience. Knative provides a serverless, event-driven runtime environment which runs on environments from your laptop or a Raspberry Pi to cloud providers or on-premises SDDC. Evan Anderson will provide an overview of the Knative components and tips on getting up and running with Knative as well as a tour of some of the more advanced features like traffic splitting and content-based routing.
14 |
15 | Add to Calendar 16 | 17 | 18 |
19 |
20 |
21 | Evan Anderson 22 | 23 |

Evan Anderson is a Staff Software Engineer at VMware, Inc. and a founding member of the Knative Project.

24 | -------------------------------------------------------------------------------- /Evan/evan.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Evan/evan.jpeg -------------------------------------------------------------------------------- /Evan/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Evan/github-site-BG.png -------------------------------------------------------------------------------- /Github1/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **GitHub Actions CI/CD 101 w/ Steve Winton & Jeremy Adams** 11 | ### **Time: 1:30-2:00PM PDT** 12 |
13 | In this short presentation you'll learn why GitHub Actions have become the popular CI/CD technology on top of GitHub by diving into the architecture and key use-cases around code quality, testing, security, package builds, and deployment to targets like VMs and Kubernetes. You'll walk away knowing how to run your first Actions workflow and where to go to get more Actions created by developer-focused companies and the huge community of developers who have adopted GitHub Actions. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 |
21 | 22 |
23 | 24 | Steve Winton 25 | 26 |

Steve Winton is a seasoned developer, with a love for openness, transparency, and multi-disciplinary collaborations, seeking to positively impact the world through the craft of software and the adoption of Open Source development practices.

27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 36 | Jeremy Adams 37 | 38 |

Jeremy Adams is the Senior Manager of Strategic Accounts. He is a senior technologist and strategist with a passion for people and entrepreneurship, integration and automation.

39 | 40 | -------------------------------------------------------------------------------- /Github1/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Github1/github-site-BG.png -------------------------------------------------------------------------------- /Github1/jeremy_adams.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Github1/jeremy_adams.jpeg -------------------------------------------------------------------------------- /Github1/steve_winton.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Github1/steve_winton.jpeg -------------------------------------------------------------------------------- /Github2/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **GitHub Actions on Hybrid vSphere Deep Dive w/ Steve Winton & Jeremy Adams** 11 | ### **Time: 2:30-3:00PM PDT** 12 |
13 | If you know the basics of GitHub Actions and vSphere administration, you'll get a lot out of the deep dive session into getting GitHub Enterprise Server and GitHub Actions set up on vSphere. We'll hit on the nuances of hybrid cloud environments like the Azure VMware Solution (AVS) and VMware Cloud (VMC). We'll also discuss how to use automation to generate images for your Actions runners including customizing your runners with the tools your developers need. A perfect follow-on to our GitHub Actions 101 talk for the VI Admin with interest in developer automation 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 |
21 | 22 |
23 | Steve Winton 24 | 25 |

Steve Winton is a seasoned developer, with a love for openness, transparency, and multi-disciplinary collaborations, seeking to positively impact the world through the craft of software and the adoption of Open Source development practices.

26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | 35 | Jeremy Adams 36 | 37 |

Jeremy Adams is the Senior Manager of Strategic Accounts. He is a senior technologist and strategist with a passion for people and entrepreneurship, integration and automation.

38 | 39 | 40 | -------------------------------------------------------------------------------- /Github2/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Github2/github-site-BG.png -------------------------------------------------------------------------------- /Github2/jeremy_adams.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Github2/jeremy_adams.jpeg -------------------------------------------------------------------------------- /Github2/steve_winton.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Github2/steve_winton.jpeg -------------------------------------------------------------------------------- /Hackathon/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | It’s not a VMware {code} event if there isn’t a Hackathon! And this year will be no different. Our 5th annual Hackathon is right around the corner. On October 1 and 2nd, VMware {code} will be hosting a 2-day virtual, live, conference. You can read more about the conference here and register here. 11 | 12 | Unlike past years, we unfortunately cannot be together in the same room for one of my favorite events so this year’s logistics will be a little different. You will register for a topic and select your country/time zone once registration opens and you and your teams will be notified on September 20th and be allowed to work together on your project until October 2nd, where you will have your chance to present your project at CodeConnect to our judges! 13 | 14 | Don’t know how to code? Don’t worry, there’s something to do on every team regardless of skill level! 15 | 16 | 17 | 18 | Key Dates: 19 | 20 | • September 7th- Hackathon Registration Opens
21 | • September 20th- Captains are sent their teams
22 | • September 21st- October 2nd- Teams work on their projects
23 | • October 2nd- Project final presentations, judging and awards
24 | 25 | 26 | 27 | Judges: 28 | 29 | Michael Roy, Product Line Marketing Manager, VMware Inc. 30 | 31 | Twitter handle: @mikeroySoft 32 | 33 | 34 | 35 | In his own words, “By day I manage the VMware Fusion and Workstation product line, by night I am a cancan dancer.” Michael has been a part of the VMware family for over 10 years now and is Responsible for Product Management of VMware Desktop Hypervisor technology products including VMware Fusion, Workstation and Player. He focuses on developer productivity, Kubernetes, and cloud native application development 36 | 37 |   38 | 39 | Justin Sider, Chief Information Officer, Belay Technologies 40 | 41 | Twitter handle: @jpsider 42 | 43 | 44 | 45 | Justin leads the development and implementation of a tool for his current company utilizing VMware, Google Cloud Platform, and Microsoft Azure for an automated provisioning & testing solution. He is a strong advocate for PowerShell and using it to automate as much as possible. Justin’s github repository and blog can be found here: 46 | 47 | https://github.com/jpsider?tab=repositories   48 | 49 | https://invoke-automation.blog 50 | 51 | In his free time Justin loves to play golf and travel! 52 | 53 | Summary: 54 | 55 | In the words of Kyle Ruddy: Please join us for one of the most interesting extra-curricular events at VMworld, the fourth fifth annual VMware Code Hackathon! It doesn’t matter what your skill level is, there’s a team for you, just come excited to learn and connect! If you have any comments or questions, let us know in the comments or in the #vmworld-hackathon channel that’s part of the VMware Code Slack group. 56 | 57 | Make sure you’ve registered for CodeConnect, we hope to see you there! 58 | -------------------------------------------------------------------------------- /Hackathon/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Hackathon/github-site-BG.png -------------------------------------------------------------------------------- /Hackathon/justin_sider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Hackathon/justin_sider.png -------------------------------------------------------------------------------- /Hackathon/michael_roy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Hackathon/michael_roy.jpg -------------------------------------------------------------------------------- /Ivaylo/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **#100DaysOfCode challenge - building code skills and habits w/ Ivaylo Ivanov** 11 | ### **Time: 10:00-10:30AM PDT** 12 |
13 | By the time of the Conference, I'll have completed my 100DaysOfCode challenge. I would like to share the idea behind, how to get started and what can one achieve during the challenge. One of the most important things to shape a new habit is persistence and consistency. The 100DaysOfCode, even if it sounds tough, aims to help you along the way. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 |
22 | Ivaylo Ivanov 23 | 24 |

Ivaylo Ivanov is a VMware engineer at Runecast Solutions. Ivaylo is currently focused on working with and learning in depth VMware products. His interests are mostly in system administration area, virtualization, automation and of course the thing that makes everything work together – networking. Ivaylor is a VMware Certified Professional (VCP-CMA, VCP-DCV, VCAP-DCA, VCAP-DCD, VCIX-DCV) and a vExpert 2016, 2017, 2018

25 | 26 | -------------------------------------------------------------------------------- /Ivaylo/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Ivaylo/github-site-BG.png -------------------------------------------------------------------------------- /Ivaylo/ivaylo_ivanov.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Ivaylo/ivaylo_ivanov.jpg -------------------------------------------------------------------------------- /JJ/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Deploying a simple Python app to Kubernetes w/ JJ Asghar** 11 | ### **Time: 11:30AM-12:00PM PDT** 12 |
13 | JJ will walk you through deploying a simple python application to Kubernetes. We'll start from the ground up, then get a complete automated build. The goal is to enable your developers to focus on code not the infrastructure! 14 | 15 |
16 |
17 | Add to Calendar 18 | 19 |
20 |
21 | 22 | 23 |
24 | JJ Asghar 25 | 26 |

JJ Asghar is an IBM Developer Advocate helping teams on board to the Cloud Native ecosystem. 27 | He lives and grew up in Austin, Texas. He enjoys a good strong stout, hoppy IPA, and some team building Artemis, madding Dwarf Fortress or Rimworld or pair programming cluster Factorio. He’s a member of the Church of Emacs, though jumps into Vim on remote machines. He usually chooses Ubuntu over CentOS, but secretly wants FreeBSD everywhere. He’s always trying to become a better Ruby developer, but flirts with Go, Rust, and only when he must, Node. A father and husband, if he’s not trying to automate his job away, he’s always trying to convince his daughters to “be button makers not button pushers.

28 | 29 | -------------------------------------------------------------------------------- /JJ/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/JJ/github-site-BG.png -------------------------------------------------------------------------------- /JJ/jj.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/JJ/jj.jpg -------------------------------------------------------------------------------- /Jake/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **The Infrastructure Automation Landscape w/ Jake Robinson** 11 | ### **Time: 2:00-2:30PM PDT** 12 |
13 | There are many tools and solutions for automating infrastructure, and the choices can be very ambiguous. We'll discuss the different types of automation tools and frameworks, their strengths and weaknesses, and what it means to the Infrastructure Administrator in the new world of Cloud, DevOps, and Code. We'll also dive in to what your learning track should look like based on your role, and how to level up your career using Automation.
14 |
15 | Add to Calendar 16 | 17 |
18 |
19 |
20 | Jake Robinson 21 | 22 |

Jake Robinson is a Sr. Product Manager at VMware for Automation Frameworks and CLIs, including PowerCLI, ESXCLI, DCLI and vCLI. Since 2008, Jake has been focused on his passion for datacenter automation, working on some of the largest VMware implementations in the world. He is a Pluralsight author and long time contributor to the VMware community.

23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Jake/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Jake/github-site-BG.png -------------------------------------------------------------------------------- /Jake/jake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Jake/jake.jpg -------------------------------------------------------------------------------- /Joe/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **GitHub Actions to Automate Multi-Cloud Deployments w/ Joe Hughes** 11 | ### **Time: 3:00-3:30PM PDT** 12 |
13 | This is about showing everyone how quickly they can get up to speed with GitHub Actions, to run their existing Terraform configurations for vSphere, VMC on AWS, or public cloud all within this CI/CD tool. 14 |

15 | Everyone should understand how easy it is to setup this platform for use within their operations & CI/CD workflow, and this walkthrough and sample Actions workflows & test Terraform configurations will teach them how. 16 |

17 | In this session, we’ll run through some basics of Terraform and GitHub Actions, followed by demos of: 18 | 23 | All of these steps are done with your existing Terraform configurations, and we will show how to configure these to be performed by any pull request (for the validate/plan steps) or push (for the apply step) to a GitHub repository, or with a manual trigger of a workflow (used to destroy in our example). 24 |

25 | The same platform can also be used to run any PowerShell, Python, or bash scripts for your environment. We'll demonstrate this by running a simple PowerShell script to tag a VM deployed by our earlier Terraform code through GitHub Actions as well. 26 |
27 |
28 | Add to Calendar 29 | 30 |
31 |
32 |
33 | Joe Houghes 34 | 35 |

Joe Houghes is a Solutions Architect at Veeam Software.

36 | 37 | -------------------------------------------------------------------------------- /Joe/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Joe/github-site-BG.png -------------------------------------------------------------------------------- /Joe/joe_houghes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Joe/joe_houghes.png -------------------------------------------------------------------------------- /Johan/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **An introduction to AI/ML w/ Johan van Amersfoort** 11 | ### **Time: 9:30-10:00AM PDT** 12 |
13 | In this session, Johan van Amersfoort will present an introduction into Artificial Intelligence, Machine Learning and Deep Learning. Learn how to prepare, design, build and test a virtual AI infrastructure through live demos and dive deeper into vSphere, BitFusion, NVIDIA GPUs, TensorFlow, Python and CUDA. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 |
22 | Johan van Amersfoort 23 | 24 |

Johan van Amersfoort is a Technologist EUC & AI at ITQ.

25 | -------------------------------------------------------------------------------- /Johan/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Johan/github-site-BG.png -------------------------------------------------------------------------------- /Johan/johan_va.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Johan/johan_va.jpg -------------------------------------------------------------------------------- /Justin/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Administration Modernization: Building and Deploying Containers to vSphere Integrated Containers w/ Justin Sider** 11 | ### **Time: 11:30-12:00PM PDT** 12 |
13 | Join me as I teach you how to migrate your PowerCLI scripts to run in vSphere Integrated Containers (VIC). Administration Modernization will revolutionize your skillset and jumpstart your career as technology continues to evolve. 14 |
15 | During the session, I will demonstrate how to deploy a PowerShell/PowerCLI application to VIC. I will highlight some tips and tricks that I have learned in my own course of learning application modernization and how I apply those to PowerCLI.
16 |
17 | Add to Calendar 18 | 19 |
20 |
21 | 22 |
23 | Justin Sider 24 | 25 |

Meet {code} coach Justin! Justin leads the development and implementation of a tool for his current company utilizing VMware, Google Cloud Platform, and Microsoft Azure for an automated provisioning & testing solution. He is a strong advocate for PowerShell and using it to automate as much as possible. Justin’s github repository and blog can be found here: https://invoke-automation.blog & https://github.com/jpsider?tab=repositories. In his free time Justin loves to play golf and travel!

26 | -------------------------------------------------------------------------------- /Justin/Resources/CodeConNotes.txt: -------------------------------------------------------------------------------- 1 | https://vmware.github.io/vic-product/assets/files/html/1.5/ 2 | https://docs.docker.com/registry/insecure/ 3 | https://docs.docker.com/registry/insecure/#use-self-signed-certificates 4 | https://blog.mailtrap.io/powershell-send-email/ 5 | 6 | 7 | 8 | 9 | docker build . -t codeconnect01 10 | 11 | docker run -it codeconnect01 12 | 13 | docker login 192.168.2.230 14 | 15 | docker tag codeconnect01 192.168.2.230/default-project/codeconnect01 16 | 17 | docker push 192.168.2.230/default-project/codeconnect01 -------------------------------------------------------------------------------- /Justin/Resources/README.md: -------------------------------------------------------------------------------- 1 | ### **Administration Modernization: Building and Deploying Containers to vSphere Integrated Containers w/ Justin Sider** 2 | 3 |
4 | Links from the PowerPoint 5 |
6 | vSphere Integrated Containers 7 |
8 | Docker and Self Signed Certificate work arounds 9 |
10 | SendMail Testing (free online tool) 11 |
12 | 13 |
14 | 15 |

16 | 17 | ## **Commands used** 18 | 19 | docker build . -t codeconnect01 20 | 21 | docker run -i codeconnect01 22 | 23 | docker login 192.168.2.230 24 | 25 | docker tag codeconnect01 192.168.2.230/default-project/codeconnect01 26 | 27 | docker push 192.168.2.230/default-project/codeconnect01 28 | -------------------------------------------------------------------------------- /Justin/Resources/Sider_CodeCon2020.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Justin/Resources/Sider_CodeCon2020.pptx -------------------------------------------------------------------------------- /Justin/Resources/docker01/dockerfile: -------------------------------------------------------------------------------- 1 | # Indicates the base image. 2 | FROM mcr.microsoft.com/powershell 3 | 4 | # Install the VMware.PowerCLI Module 5 | RUN pwsh -Command "Install-Module VMware.PowerCLI,ReportCardPS,jpsider -Force -Confirm:0;" 6 | 7 | # Add the Long-Running Script to the Image in the /tmp directory 8 | COPY sendMail.ps1 /tmp 9 | 10 | # Start the Long-Running Script at Runtime 11 | CMD ["pwsh", "-Command", "/tmp/sendMail.ps1"] -------------------------------------------------------------------------------- /Justin/Resources/docker01/sendMail.ps1: -------------------------------------------------------------------------------- 1 | # vCenter Info 2 | $vcuser = "administrator" 3 | $vcpass = "VMware1!" 4 | $vcenter = "192.168.2.220" 5 | 6 | # Mail Info 7 | $username = "1ba94cf337ecbc" 8 | $pass = '6abf4561456fe0' 9 | $smtpServer = "smtp.mailtrap.io" 10 | $Port = "587" 11 | 12 | # Just an FYI, never save passwords in plain text in scripts, this is just for a demo. :-D 13 | 14 | Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCeip $false -Scope AllUsers -Confirm:$false 15 | 16 | $ValidConnection = "False" 17 | do { 18 | 19 | try{ 20 | # Connect to vCenter 21 | Connect-VIServer -Server $vcenter -User $vcuser -Password $vcpass 22 | $ValidConnection = "True" 23 | } 24 | Catch { 25 | Write-Output "Unable to connect to vCenter" 26 | $ValidConnection = "False" 27 | Start-Sleep -Seconds 15 28 | } 29 | } 30 | while ($ValidConnection -eq "False") 31 | 32 | 33 | $SendReport = "True" 34 | $Count = 1 35 | do { 36 | try { 37 | # Generate the HTML report using ReportCardPS 38 | $TemplateReportPath = (Get-ReportCardTemplateSet | Where-Object {$_.Fullname -like '*vCenter*'}).Fullname 39 | $ReportHTML = New-ReportCard -Title 'For VMware {code} Connect' -JsonFilePath $TemplateReportPath 40 | 41 | # Create a Subject with Count property 42 | $Subject = "Hey, VMware Code Connect! Email number: $Count" 43 | 44 | # Create a Credential Object 45 | [securestring]$secStringPassword = ConvertTo-SecureString $pass -AsPlainText -Force 46 | [pscredential]$credOject = New-Object System.Management.Automation.PSCredential ($userName, $secStringPassword) 47 | # Send the Mail Message 48 | Send-MailMessage -To 'whocares@mail.com' -From 'my@container.com' -Subject "$Subject" -Body "$ReportHTML" -Credential $credOject -SmtpServer "$smtpServer" -Port "$Port" 49 | 50 | } 51 | Catch { 52 | Write-Output "Something went wrong sending the report, Oh No!" 53 | } 54 | # Wait for 5 Seconds 55 | ConvertTo-AsciiArt -Text "5 . . . " 56 | Start-Sleep -Seconds 1 57 | ConvertTo-AsciiArt -Text "4 . . . " 58 | Start-Sleep -Seconds 1 59 | ConvertTo-AsciiArt -Text "3 . . . " 60 | Start-Sleep -Seconds 1 61 | ConvertTo-AsciiArt -Text "2 . . . " 62 | Start-Sleep -Seconds 1 63 | ConvertTo-AsciiArt -Text "1 . . . " 64 | Start-Sleep -Seconds 1 65 | 66 | $Count++ 67 | 68 | } while ($SendReport -eq "True") 69 | -------------------------------------------------------------------------------- /Justin/Resources/docker02/dockerfile: -------------------------------------------------------------------------------- 1 | # Indicates the base image. 2 | FROM mcr.microsoft.com/powershell 3 | 4 | # Install the VMware.PowerCLI Module 5 | RUN pwsh -Command "Install-Module VMware.PowerCLI,ReportCardPS,jpsider -Force -Confirm:0;" 6 | 7 | # Add the Long-Running Script to the Image in the /tmp directory 8 | COPY sendMail.ps1 /tmp 9 | 10 | # Start the Long-Running Script at Runtime 11 | CMD ["pwsh", "-Command", "/tmp/sendMail.ps1"] -------------------------------------------------------------------------------- /Justin/Resources/docker02/sendMail.ps1: -------------------------------------------------------------------------------- 1 | # vCenter Info 2 | $vcuser = $env:vcuser #= "administrator" 3 | $vcpass = $env:vcpass #= "VMware1!" 4 | $vcenter = $env:vcenter #= "192.168.2.220" 5 | 6 | # Mail Info 7 | $smptuser = $env:smptuser #= "1ba94cf337ecbc" 8 | $smptpass = $env:smtppass #= '6abf4561456fe0' 9 | $smptServer = $env:smtpServer #= "smtp.mailtrap.io" 10 | $Port = "587" 11 | 12 | # Just an FYI, never save passwords in plain text in scripts, this is just for a demo. :-D 13 | 14 | Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCeip $false -Scope AllUsers -Confirm:$false 15 | 16 | $ValidConnection = "False" 17 | do { 18 | 19 | try{ 20 | # Connect to vCenter 21 | Connect-VIServer -Server $vcenter -User $vcuser -Password $vcpass 22 | $ValidConnection = "True" 23 | } 24 | Catch { 25 | Write-Output "Unable to connect to vCenter" 26 | $ValidConnection = "False" 27 | Start-Sleep -Seconds 15 28 | } 29 | } 30 | while ($ValidConnection -eq "False") 31 | 32 | 33 | $SendReport = "True" 34 | $Count = 1 35 | do { 36 | try { 37 | # Generate the HTML report using ReportCardPS 38 | $TemplateReportPath = (Get-ReportCardTemplateSet | Where-Object {$_.Fullname -like '*vCenter*'}).Fullname 39 | $ReportHTML = New-ReportCard -Title 'For VMware {code} Connect' -JsonFilePath $TemplateReportPath 40 | 41 | # Create a Subject with Count property 42 | $Subject = "Hey, VMware Code Connect! Email number: $Count" 43 | 44 | # Create a Credential Object 45 | [securestring]$secStringPassword = ConvertTo-SecureString $smptpass -AsPlainText -Force 46 | [pscredential]$credOject = New-Object System.Management.Automation.PSCredential ($smptuser, $secStringPassword) 47 | # Send the Mail Message 48 | Send-MailMessage -To 'whocares@mail.com' -From 'my@container.com' -Subject "$Subject" -Body "$ReportHTML" -Credential $credOject -SmtpServer "$smptServer" -Port "$Port" 49 | 50 | } 51 | Catch { 52 | Write-Output "Something went wrong sending the report, Oh No!" 53 | } 54 | # Wait for 5 Seconds 55 | ConvertTo-AsciiArt -Text "5 . . . " 56 | Start-Sleep -Seconds 1 57 | ConvertTo-AsciiArt -Text "4 . . . " 58 | Start-Sleep -Seconds 1 59 | ConvertTo-AsciiArt -Text "3 . . . " 60 | Start-Sleep -Seconds 1 61 | ConvertTo-AsciiArt -Text "2 . . . " 62 | Start-Sleep -Seconds 1 63 | ConvertTo-AsciiArt -Text "1 . . . " 64 | Start-Sleep -Seconds 1 65 | 66 | $Count++ 67 | 68 | } while ($SendReport -eq "True") 69 | -------------------------------------------------------------------------------- /Justin/Resources/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Justin/Resources/github-site-BG.png -------------------------------------------------------------------------------- /Justin/Resources/report.html: -------------------------------------------------------------------------------- 1 | ClarityPS

For VMware {code} Connect



  CPU

7.891 GHz free

9214 MHz used | 9.214 GHz total

  Memory

44.00 GB free

19.78 GB used | 63.78 GB total

  Storage

1032.19 GB free

137.06 GB used | 1169.25 GB total

  VM

4

1

0

Powered On | Powered Off | Suspended

  VMHosts

2

0

0

Connected | Disconnected | Maintenance

  Alarms

  vCenter Plugins

NameVersionCompany
VMware vCenter Storage Monitoring Service7.0.0VMware Inc.
vService Manager7.0.0VMware Inc.
VMware vSphere Profile-driven Storage Service7.0.0VMware Inc.
License Services7.0.0VMware, Inc.
VMware vCenter VSAN Data Protection Service1.0VMware, Inc.
vSphere ESX Agent Manager7.0.0VMware Inc.
vSphere Authentication Proxy6.0VMware, Inc.
WCP Service1.0.0VMware Inc.
vCenter Server Life-cycle Manager1.0VMware, Inc.
vSphere Client1.5.0VMware, Inc.
vSphere Integrated Containers-H5Client1.5.2.1500VMware
RuleEngine7.0.0.00000VMware, Inc.

2 | -------------------------------------------------------------------------------- /Justin/Resources/template.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "predemodocker02" 3 | components: 4 | predemodocker02: 5 | type: "App.Container" 6 | data: 7 | name: "predemodocker02" 8 | image: "192.168.2.230:443/default-project/predemodocker02" 9 | _cluster: 1 10 | env: 11 | - var: "vcuser" 12 | value: "administrator" 13 | - var: "vcpass" 14 | value: "VMware1!" 15 | - var: "vcenter" 16 | value: "192.168.2.220" 17 | - var: "smptuser" 18 | value: "1ba94cf337ecbc" 19 | - var: "smtppass" 20 | value: "6abf4561456fe0" 21 | - var: "smtpServer" 22 | value: "smtp.mailtrap.io" 23 | publish_all: true 24 | restart_policy: "no" 25 | -------------------------------------------------------------------------------- /Justin/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Justin/github-site-BG.png -------------------------------------------------------------------------------- /Justin/sider_head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Justin/sider_head.png -------------------------------------------------------------------------------- /Kit/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **CodeCon Introduction & Keynote** 11 | ### **Time: 9:00-9:30AM PDT** 12 |
13 | 14 | In the everchanging automation world, VMware has standardized the automation of Kubernetes by allowing you to automate like you always have. We're approaching Kubernetes from a vSphere automation perspective, viewing Kubernetes as the consumption layer for vSphere and embracing the merging of two. He'll discuss some new announcements around SmartNIC and remind the audience of the importance of vSphere and its adjacent opportunities. At this keynote session, we're pleased to have Kit Colbert introduce our two-day live VMware {code} Connect conference. Tune in for an exciting start to our conference! 15 | 16 |

17 | Add to Calendar 18 | 19 |
20 |
21 |
22 |
23 | Kit Colbert 24 | 25 |

Kit Colbert is VP & CTO, Cloud Platform BU at VMware, driving technical strategy and innovation for VMware Cloud Foundation, vSphere, and VMware's hybrid cloud offerings. Previously he was GM of Cloud-Native Apps, CTO for End-User Computing, the Chief Architect and Principal Engineer for Horizon Workspace, and the lead Management Architect for the vRealize Operations Suite. At the start of his career, he was the technical lead behind the creation, development, and delivery of the vMotion and Storage vMotion features in vSphere. Kit holds a ScB in Computer Science from Brown University and is a recognized thought-leader on Cloud-Native, End-User Computing, and Hybrid Cloud Infrastructure trends. He speaks regularly at industry conferences, on the main stage at VMworld, and is the Hybrid Cloud voice for the VMware Office of the CTO blog.

26 | -------------------------------------------------------------------------------- /Kit/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Kit/github-site-BG.png -------------------------------------------------------------------------------- /Kit/kit_colbert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Kit/kit_colbert.png -------------------------------------------------------------------------------- /Kyle/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Power CLI Code on the Fly w/ Kyle Ruddy** 11 | ### **Time: 12:30-2:00PM PDT** 12 |
13 | Kyle Ruddy is a well-known subject matter expert of PowerShell and Power CLI. Join us for this Code on the Fly sessions and make sure to bring all your automation questions, and Kyle will make sure to provide real-time solutions! 14 |

15 | Add to Calendar 16 |
17 | 18 |
19 | Kyle Ruddy 20 | 21 |

Kyle Ruddy is a Senior Technical Marketing Architect working for VMware R&D in the Cloud Platform Business Unit. Kyle currently focuses on vSphere and VMware Cloud on AWS automation and the associated automation frameworks including all things API, CLI, and SDK. Kyle is also a Microsoft MVP and long-term vExpert. Kyle holds the unofficial record for the most unique sessions given during a single VMworld event at 16! He also has a a fan account for his beard on twitter! (@kyleruddybeard)

22 | -------------------------------------------------------------------------------- /Kyle/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Kyle/github-site-BG.png -------------------------------------------------------------------------------- /Kyle/kyle_ruddy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Kyle/kyle_ruddy.jpg -------------------------------------------------------------------------------- /Kylie/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **A tour of tools for integrating Carbon Black Cloud into your Security Stack w/ Kylie Ebringer** 11 | ### **Time: 2:00-2:30PM PDT** 12 |
13 | In this talk, you will get a rundown of the available Developer Tools for the Carbon Black Cloud product suite. We have RESTful APIs and a bulk data forwarder to access data directly, product-specific integrations, and a Python library to make scripting easier. Some examples of the functions available through the APIs are exporting data such as device, alert and process information, configuration of watchlists, and taking actions on endpoints using Live Response. This enables automation of tasks, export of data for further analysis and integration with other products such as SIEMs. At the end of this session, you’ll have an overview of the options available to programmatically access Carbon Black Cloud and ideas of how this can be leveraged in your environment. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 |
21 | 22 |
23 | Kylie Ebringer 24 | 25 |

Kylie is the Engineering Manager of Developer Relations for VMware Carbon Black. Prior to joining Carbon Black, Kylie worked in the Australian Government in several spooky roles including coordinating international project teams and as an information architect focusing on cyber security. Before moving to architecture and management roles, Kylie developed an expertise in data modeling and data warehouse implementation.

26 | -------------------------------------------------------------------------------- /Kylie/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Kylie/github-site-BG.png -------------------------------------------------------------------------------- /Kylie/kylie.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Kylie/kylie.jpeg -------------------------------------------------------------------------------- /Luc/1 Flow/ArtAPI.drawio: -------------------------------------------------------------------------------- 1 | 7V1td5o+G/8s94u+tAdCCPCytbXbf0/d2m3d3vRQSZUVxSG2uk9/g4KFJGKQCLHSc3YmAQJcz7lyJb8TrTuaXwX2ZPjJd7B3AhRnfqJdnAAAoGFF/8Uti1WLqqjqqmUQuE7S9tpw4/7D6YVJ68x18DR3Yej7XuhO8o19fzzG/TDXZgeB/5K/7NH38k+d2ANMNdz0bY9u/ek64TBpVZH1euIddgfD9NFIh6szIzu9OvmU6dB2/JdMt9rlidYNfD9c/fo+xcGXhz/xVwDFsx8iUi6vTT5m7EY9uv541TgdRl0B5ef7xU/v4xO6+u/r9K/9/fzD7ecfHS3+UNvBJwCdAC2ipHb+Yrtxr6qiKJnWpJM5+Ot9nrx8/3Pe8f49PV1e/5u7HV3hvZ35DqjkO8CZNVCv7sF/fs9V7u7vwq9no45a6RUMEa8AKhFREcEJYFW6XRXxDrDS3WUFkslOvdorIPrCYHI7/qjcX1mLq8/+7dn9eOF97QBujjNv1/WS38rupaz6sHspqwHMXtSyAsTsJUf/HW4X8incisR+h7LazJYvs9pLACHc4Las7NuFCLmm8ZKsGt9UKEQNqtkFVYxdqMY3XYgEq1q1200hL2FUu72aOQJiCFlNroEQwyymF5U7Wtx+e6HN4A5EmLdDIXzTqplwKMZ6VhMeWDYmY/dSzR5BIV4dVrPM0BLyEpD3Qt5AFHJL2b1y++GXb6LF5f3Z9e9n1cS/LzrcCjn88ftvGNx9/eQuftz8Xlx+nlzapQcuzE6EWBYhb1JW2CfdcNCDn3voYvjNudOuvnjQZFIUKPn7V2P1NLPBHMco66H/aN7FnncCeqvD6EcmBZC7orjHdY4iwONw25PTp1FdsyMGbdX3s+3NcDYdMQ0XaYok6sadTHFMlaEb4puJ3Y/PvAT2JGobhqM4j6FGP+3pZJWieXTn2ImpHQb+E+76nh8su9LAhYGUmI6P/jjMtD8u/+J21/PS9rE/xutO0uSMtmRikmh55chW2iQ0fMZBiOdkjmY0v8L+CIfBIh5epgmqOAqO70lSW2ZKmpdMnshIcj/DbIoobbST3NRg3TnICkPCoTLcAi232NxCqnzMslpmsZllEZql6QrNLJPFLFMAs5gOpFWsDbwyG1WsjZlrkjfOAN8kh34QDv2BP7a9y9fW89fWj74/STj1B4fhIpmTsGehn+djRMlgcRfT91RPD38l5F4eXMxzR4vkqAJfpv4s6OOC6xJ3HdrBABf1h1bXxXQp5HKAPTt0n/OTIVU4VvTWGe16Hx2OcaQdAHnRd5w/BNGvQfyrE51x7NDecMZfUil6raE7HlBysEUzY3VL2K1G1DgfePZ0mnItp18qyUfbcwfx1IyHH0OWSjuG9bBS6YzqRu293mX34nKPCmqkU3CJggKGLQUM/YQC1HNTHp9g9i883UFjM3xj6ClTn7P8XWmwcxbPEUbH/ZjVbv82EpvViZ7rvSp6OjFpbheE5cTdud1/GgT+bOywrPfuOr9pdoVLlxOB6CinppE32ulkK7e2J51f++44zFziPz5OI7OTG2Wk1yRPh6mLTh9NytnKdCV3EaK2/hgu6ds0pShE+qr4i/XBr7zz2OAvOKV0n24FcboVo7QoWpqFapJFUSJEx4KffbkjDjklaNOMeUkJIkyZKpH4FFEiG+xMY8oMcYDjF4j+9UeOF1OpR4lVMPRHD7Pp9kFGjpex3+vZI9eLifQOe884dPs2I+BJo5h+xHQcsJ1d9Mg4tNIu0OvR7VKAO5CObxwbm499VkSE+iZ+KO8OS0Q+Zj7yURVG6KMwQh8Ro8gi85hh/Tt7MllUCVNhuTCV5I6OTQeyuGOCBw2h9GHJq6l75BYk4oI649RNJS+12PS5G96ldjr6nYkJoqNXgx4fCB5BbioX4jLUvFGn8BEkm1l0XFe7Uy4Z1u2TiRYvE63S7hZZkDSrEnlcdkIIShD0N5MkKpKOMkxHyBAaZqXZQy0vS0jjGw3WKT10mp6K1yazB8/tRz/Ort9XitrKB0+1JHkNK88maNHOmZWPFxFIsc09HUQfs7lXDU57r5ZX/dpSRaL0FdJR9lFbe27hSLm4+9hbetlQadlgDb7fog0nB1iN23CVdqwXftS38z+K9vsbD1NM6XWXFT30PM3ZmXamNzce1tWmx8Manfc8arsKeEfKAJa2q3S8Lb1pjcsVmw7JCOlQD0E6dgjJLPXgpAPQ+Zmbm3fxoz3Pf8FH4XERI6VZq8fVNLmt9S6p0PjgGgduRKF4wmL/eg15rb7OqdcVUyhr5U+kzLAI8Vl9UkEKJRVmlO/I2t/MfCFlMybi+xSfrMp5ov9W9mJkD+JMS8kAMW8gsOro2GAZCAsZmo1qMxCAYB3ijPHQviwEoItz2hmqDRG5xcstERH5IZU0rs342nSvg7GNZlywlVY4jTRv7CU4za2RLn6DjRZlWhVKq8+W6Y6FP4upOYsO3mD8RWatWaWP9WY8KDZ0h7j/xK5knWAcTNmn+r7nYXswwxvOP3f90Wg2dsPSdpuoYpXUbyLCEgOtcb9J57J2Gvy2Na0lDXjJlLVyqgAIc8Kz3B6gyuB5vR4sL5Mw3wFHaSxlr0hx5Y3kdbiloz1H8lpzs3OyBSLla7N10wQ57ukVkztpDEIYTY1TKCJjYi8yl03iC6abn6Mj9nM2Ceum93qVydUbcKestr9RzdEXvbqlF1vR+LZqNZ6Sxl06MaxtPO6CoDF7JGO1QDoY2epcU818wxPCBu2qapvUqoPHZWYVdJjnXqcq+5K+18t3U4fGWeRV1vMYSv450Cj2POR7EdeX9zzCHAY9mjiG8Toi/HTjFQrpSOEYnQTkHYFByQrB6VxXm2TZKYojrKnOWj1Ta5IF0pMTxxzGQcZa/8KitzL1JwcWxumiFpVLFsZxG9fM2m6A1Bz3gJgojhynI2U/URxU2c9pPCqDxzaO1wzJ4jGdLjGjiB5RZhL/fPTwPMmDM1LiBRpM7c/R6y1nmctReatR1nkHaBli6wxii8oOWoS3T51G2dyzRQ6qyHIUQWbCAuzwhGkmtpuATXvvxwt6gHI5n0QCgYPVEz13/LQ6OwzDGIbgLH4s6Dn4GXv+BAenz6OXSE5O+/5oeQZsFWwr86GJJjB3lkqlu+/5M2e7YRkEtuPi3BZSjm5olsMIO5GjOJgZdlpINfW6jA4pP+tkbTbsZCmCSvojDrPDs+Mik2GI9gU3X86u6wk4dt8FIjqqs1YO8Y4hEW+tXG4LGzMnKIKSVYainCqZP5B7iKHnz+pctq3OKAXRVXTfLm9u5ZZMOYQQlBNC5VTTEJkxlX+ohOgEye1i8iYTiuSEOmLUidQawCI6gD3qJTSpym3XTd79Cl/rPFQrPwxG8mumoCKiasIBIcqKR2dJSukiC27BKZ/7UtR89mu9fYTEkgNop2+/CNw/Spo9nSwiJ2Ewtgau1aQbNa2p2as21bRUBVnWqZX5ywfwFsmjPVepITpnfIXDzg8XvyyH/CEeT11/fLHca5Zgcbl46PGx37cslr5oSLM0p7YJViKFaxoGpTz1Tumk2lzbJlslKgH3qnHC91/ekCUjJvFq1zHGZofj50gHOj/xwzf8d4anIT29mlzyLTr5CUe8dt6I/pFTKBLon0qRVhr9k3HOFXHvpVKTS6UWbe4p3a6qgG1Jdsy3c5oPersWrZNsjgqUke/MIoF8G7ZBVVB9xmHTbMe1/4KD7sd4yuO9g+0kM7FpvmMSX9333FM3vvbUHtqnrs834WHADDH2O+GBbfSwWiZKMN7s4z5zEPNg6lCvaElKMF7L83096yrVhIdBB8uU4kky9SrJjCppMHWSXbuuy4f7W82zCcVtG+ePE/qmWUypTTh3La8kRGtbdOc/ra9Q7X6zdAT/9cMu5FOsV/OZ0M+xp8OYG0sWZbgVt1/bYYiD8bIFKBpFbUBSW/i6Tklsr0HYXt4VX+U7Emd7mSJC53U5RCTrXou1jYP/hE9GtqIs2+lw2VCUbvfgJCZlLNjVOwMC0Ibqac8iQs/3pwmV2CrnZAX9nfnpic50OVaPQnklYtb89eTJsvQ94epr45LzDsw2rZI11zfp86LXXz1ydYKS1MhUhyzxJDwEw2lQsBSx4Xf7tneWnBi5juNt8mm1OBhySwJW2RJr9EauhRLmXVgBe91yEX1bfN+yiK6VEVJGNN5tK0TIyCaU5zZclA+BdBMOdssr+RBImbyqK6vebEkP89MT2mcT5MzrGgMgLXrrFoB0H1V4DQKQMplNJ0laANJqOl++yOo4EEiZ1JIBjEhqBNIif7HVr7w1BFLmR0qwEFpqBNJKEgR22LMrLz+q7PLTQpCuzrxtCNIi+9hu8CwZBCmTWWZNRr05CFK2BWbssV8t8KxnFCnB+o1mauXYSRDGUnj2eKz8NnNyg5CyyUEn8I5l7VeheLQopHziQ1cLtDCkNW5IwmYKnTc8aovP67fV8uv9ZYYhZX+jqDTjW7H33MJhlhaOg5MNOgfYwpA2ZcPpZFoLQ7pxTFwrDCmbXw3u2CylXTU57SrYYZglNQwpmxx0gqvp3HhNMKTVpGOHkExuGNJCcrQwpE16XEtuay0ZDGmhMd9u9XnTLEcIQ1pI2RaGtJZl6YVC285SSQZDyuYWkNueN4gJVlhgsD0mq8l21whPWkiQI8M7aRKftHDetcXOOGSAUjZrBZWMtTWvZY14qlQtRGkOk7E+iFI2V44SolRU9XaLUVqw+ZHsGKWFQnA04CZNgpSyOUCnJo+5liCNmLZXj4Hy5ivHefmz1gx0+UNDtxJV+NeClDYAUlrIvCMbtDcJUsrmQ92LjWVyEoDXSQjfjrMazwClO22i5eBAStmspXOZRx3G6ZwaqpZMk8gNUsqmRYMrf+vgcQtSKkFURud53/Y4vkmQUjYH6MwiRXRJdsrdHjbxpgZbkFL2cw4UpLRAGPKa0IKUroxQ0yClbIYxih2PGqSUvR0Lb6IRtiClwqIUOqF5NCClFYWw5OYk8oOU9kZfVPux5315dqePHz78+fsnuGdsdngbbwzKko+PKz/Iyl1s3wo0wFP3n/2w7C9ma+LQo8718xP9gsnoYokmfUicoxmPI8udPOUkGeoUmQ0VplCQUnCoUGJbGNn6hxiQLo896iVQkLcWB5YsdZAdRpb9kXRyuYWRrSo4VunYT24Y2UJytDCy9Zt0WI+G7lWb3jqMbOFXtzCyzU26QVSTf2sORrZaPHM4MLKF39nCyC71TT79q3ujwsOBkS0MJ6VZvftmYGQLyd3CyIo1DnXCyLL3wc6m0loY2SzfG4eRZTOMzlxRiifJ5Lgkc96HCCPLZj0LqI4MGlq4y11k5BDhLtkywoEy3eJdVhKZlLOHgHfJlhFWfVULeNk0mGGtgJdswaCTBC3ipVxCUivi5aQbDnrwcw9dDL85d9rVFw+aPCiKe44/CQcgvFqzsUBVJZKEBgmvyO1iVF09tRCyLBXGvZr5iTRdM081Xdc0S9EtDaTocsIzFeTSEkMjpK9UpiI6DHw/zF4e6eHwk+/Eo+bL/wM= -------------------------------------------------------------------------------- /Luc/1 Flow/ArtAPI.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Luc/1 Flow/ArtAPI.pdf -------------------------------------------------------------------------------- /Luc/1 Flow/Show-Schema.ps1: -------------------------------------------------------------------------------- 1 | $drawing = '.\1 Flow\ArtAPI.drawio' 2 | $title = 'API Flowchart' 3 | [xml]$content = Get-Content -Path $drawing 4 | 5 | $uriBase = 'https://viewer.diagrams.net/' 6 | $options = 'p=anim','lightbox=open','highlight=0000ff','nav=1',"title=$($title)" 7 | $uri = "$($uriBase)?$($options -join '&')#R$([uri]::EscapeDataString($content.mxfile.diagram.'#text'))" 8 | 9 | Start-Process $uri 10 | -------------------------------------------------------------------------------- /Luc/2 References/Links.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 30 | 31 | 32 |

CodeConnect 2020

33 |

PowerCLI and the Art of the API

34 |

Luc Dekens

35 |

 

36 |

Links

37 | 58 |
59 |

60 | PowerCLI 61 | API Explorer 62 | PowerShell 63 |

64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /Luc/3 Object/Calculated-Property.ps1: -------------------------------------------------------------------------------- 1 | Get-VM -Name | 2 | Select-Object -Property Name, 3 | @{N='VMHost';E={$_.VMHost.Name}}, 4 | @{N='ConsolidationNeeded';E={$_.ExtensionData.Runtime.ConsolidationNeeded}} 5 | -------------------------------------------------------------------------------- /Luc/3 Object/NET-example.ps1: -------------------------------------------------------------------------------- 1 | $vmName = '' 2 | $vm = Get-VM -Name $vmName 3 | 4 | $vm | Get-Member | Out-Host -Paging 5 | 6 | $vm.Guest | Format-Custom -Depth 1 | Out-Host -Paging 7 | 8 | $vm.Guest | Format-Custom -Depth 1 | more 9 | -------------------------------------------------------------------------------- /Luc/3 Object/vSphere-example.ps1: -------------------------------------------------------------------------------- 1 | $vmName = '' 2 | 3 | Get-View -ViewType VirtualMachine -Filter @{Name="$vmName"} | 4 | Select-Object -Property Name 5 | 6 | Get-View -ViewType VirtualMachine -Filter @{Name="^$vmName$"} | 7 | Select-Object -Property Name 8 | 9 | $vm = Get-View -ViewType VirtualMachine -Filter @{Name="^$vmName$"} 10 | $vm | Get-Member | Out-Host -Paging 11 | 12 | $vm.Summary | Format-Custom -Depth 1 | Out-Host -Paging 13 | 14 | 15 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4a Basics/1_GetView_vs_ExtensionData.ps1: -------------------------------------------------------------------------------- 1 | $vmName = '' 2 | 3 | $vmExt = Get-VM -Name $vmName 4 | $vmView = Get-View -ViewType VirtualMachine -Filter @{Name="^$vmName$"} 5 | 6 | Compare-Object -ReferenceObject $vmExt.ExtensionData -DifferenceObject $vmView -IncludeEqual 7 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4a Basics/2_MoRef_Follow.ps1: -------------------------------------------------------------------------------- 1 | $sView = @{ 2 | ViewType = 'HostSystem' 3 | Property = 'Name','VM','Parent' 4 | PipelineVariable = 'esx' 5 | Filter = @{ 6 | Name = '^esx' 7 | } 8 | } 9 | 10 | Get-View @sView | 11 | ForEach-Object -Process { 12 | Get-View -Id $esx.VM -Property Name | 13 | Select-Object @{N='VMHost';E={$esx.Name}}, 14 | @{N='VM';E={$_.Name}}, 15 | @{N='Datacenter';E={ 16 | $obj = Get-View -Id $esx.Parent -Property Name,Parent 17 | while($obj -isnot [VMware.Vim.Datacenter]){ 18 | $obj = Get-View -Id $obj.Parent -Property Name,Parent 19 | } 20 | $obj.Name 21 | }} 22 | } 23 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4b Property/1_ScheduledTask-Info.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://vdc-download.vmware.com/vmwb-repository/dcr-public/b50dcbbf-051d-4204-a3e7-e1b618c1e384/538cf2ec-b34f-4bae-a332-3820ef9e7773/vim.scheduler.ScheduledTaskManager.html 2 | 3 | $schedMgr = Get-View ScheduledTaskManager 4 | Get-View -Id $schedMgr.ScheduledTask | 5 | Select-Object -Property @{N='Name';E={$_.Info.Name}}, 6 | @{N='Enabled';E={$_.Info.Enabled}}, 7 | @{N='Entity';E={(Get-View -Id $_.Info.Entity -Property Name).Name}}, 8 | @{N='State';E={$_.Info.State}}, 9 | @{N='LastRun';E={$_.Info.PrevRuntime}}, 10 | @{N='NextRun';E={$_.Info.NextRuntime}} | 11 | Format-Table -AutoSize 12 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4c Method/1_BG-vs-wait.ps1: -------------------------------------------------------------------------------- 1 | # See documentation 2 | Start-Process https://vdc-repo.vmware.com/vmwb-repository/dcr-public/790263bc-bd30-48f1-af12-ed36055d718b/e5f17bfc-ecba-40bf-a04f-376bbb11e811/vim.HostSystem.html#enterMaintenanceMode 3 | 4 | $sView = @{ 5 | ViewType = 'HostSystem' 6 | Property = 'Name' 7 | PipelineVariable = 'esx' 8 | Filter = @{ 9 | Name = '^esx3' 10 | } 11 | } 12 | 13 | $esx = Get-View @sView 14 | 15 | Get-Member -InputObject $esx -MemberType Method -Name EnterMaintenance* 16 | 17 | $maintSpec = New-Object -TypeName VMware.Vim.HostMaintenanceSpec 18 | $maintSpec.VsanMode = New-Object -TypeName VMware.Vim.VsanHostDecommissionMode 19 | $maintSpec.VsanMode.ObjectAction = [VMware.Vim.VsanHostDecommissionModeObjectAction]::noAction 20 | 21 | # Wait for method call to complete 22 | $esx.EnterMaintenanceMode(0,$null,$maintSpec) 23 | 24 | # Method call runs in background (cfr RunAsync) 25 | $taskMoRef = $esx.EnterMaintenanceMode_Task(0,$null,$maintSpec) 26 | (Get-View -Id $taskMoRef).Info 27 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4c Method/2_MO_VM_Consolidate_1.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://vdc-download.vmware.com/vmwb-repository/dcr-public/b50dcbbf-051d-4204-a3e7-e1b618c1e384/538cf2ec-b34f-4bae-a332-3820ef9e7773/vim.VirtualMachine.html#consolidateDisks 2 | 3 | # Method on Managed Object 4 | 5 | $vmName = '' 6 | $vm = Get-View -ViewType VirtualMachine -Filter @{Name="^$vmName$"} 7 | 8 | $vm.ConsolidateVMDisks() 9 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4c Method/3_VM_Consolidate_All.ps1: -------------------------------------------------------------------------------- 1 | # Access the Managed Object through ExtensionData 2 | 3 | Get-VM | 4 | Where-Object{$_.ExtensionData.Runtime.ConsolidationNeeded} | 5 | ForEach-Object -Process { 6 | $_.ExtensionData.ConsolidateVMDisks() 7 | } 8 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4c Method/4_SM-AlarmManager_Clear.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://vdc-download.vmware.com/vmwb-repository/dcr-public/b50dcbbf-051d-4204-a3e7-e1b618c1e384/538cf2ec-b34f-4bae-a332-3820ef9e7773/vim.alarm.AlarmManager.html#clearTriggeredAlarms 2 | 3 | # Method via a Service Manager 4 | 5 | $alarmMgr = Get-View AlarmManager 6 | 7 | # Clear all yellow metric alarms on VMs 8 | 9 | $filter = New-Object -TypeName VMware.Vim.AlarmFilterSpec 10 | 11 | $filter.Status = [VMware.Vim.ManagedEntityStatus]::yellow 12 | $filter.TypeEntity = [VMware.Vim.AlarmFilterSpecAlarmTypeByEntity]::entityTypeVm 13 | $filter.TypeTrigger = [VMware.Vim.AlarmFilterSpecAlarmTypeByTrigger]::triggerTypeMetric 14 | $alarmMgr.ClearTriggeredAlarms($filter) 15 | 16 | # Clear all alarms 17 | 18 | $filter = New-Object -TypeName VMware.Vim.AlarmFilterSpec 19 | 20 | $alarmMgr.ClearTriggeredAlarms($filter) 21 | -------------------------------------------------------------------------------- /Luc/4 SOAP/4d Problems/Vpxd_Verbose.ps1: -------------------------------------------------------------------------------- 1 | #requires -Modules Posh-Ssh 2 | 3 | #region Set VCSA logging to 'verbose' 4 | 5 | $verboseLevel = 'verbose' 6 | 7 | $sAdvGet = @{ 8 | Entity = $global:DefaultVIServer 9 | Name = 'config.log.level' 10 | } 11 | $logLevel = Get-AdvancedSetting @sAdvGet 12 | if($logLevel.Value -ne $verboseLevel) { 13 | $sAdvSet = @{ 14 | AdvancedSetting = $logLevel 15 | Value = 'verbose' 16 | Confirm = $false 17 | } 18 | Set-AdvancedSetting @sAdvSet 19 | } 20 | #endregion 21 | 22 | #region Get VCSA hostname & credentials 23 | 24 | $vcsaServer = [uri]$global:DefaultVIServer.ExtensionData.Client.ServiceUrl 25 | $viCred = Get-VICredentialStoreItem -Host $vcsaServer.Host 26 | $vcsaSecure = ConvertTo-SecureString -String $viCred.Password -AsPlainText -Force 27 | $cred = New-Object -TypeName PSCredential -ArgumentList $viCred.User,$vcsaSecure 28 | 29 | $sSession = @{ 30 | ComputerName = $vcsaServer.Host 31 | Credential = $cred 32 | AcceptKey = $true 33 | } 34 | $session = New-SSHSession @sSession 35 | #endregion 36 | 37 | $start = Get-Date 38 | 39 | #region Your code 40 | 41 | $user = 'testuser' 42 | $old = 'MyPrevious1!' 43 | $new = 'Whatever666!' 44 | 45 | $sView = @{ 46 | Viewtype = 'HostSystem' 47 | Property = 'ConfigManager.AccountManager' 48 | PipelineVariable = 'esx' 49 | Filter = @{ 50 | Name = 'esx3' 51 | } 52 | } 53 | Get-View @sView | 54 | foreach-object -process { 55 | $userMgr = Get-View -Id $esx.ConfigManager.AccountManager 56 | $userMgr.ChangePassword($user,$old,$new) 57 | } 58 | 59 | #endregion 60 | 61 | $finish = Get-Date 62 | 63 | #region Fetch vpxd extract 64 | 65 | $time1 = $start.ToString('yyyy-MM-ddTHH:mm:ss') 66 | $time2 = $finish.ToString('yyyy-MM-ddTHH:mm:ss') 67 | $log = '/var/log/vmware/vpxd/vpxd.log' 68 | 69 | $cmd = @' 70 | shell 71 | sed -n '/$time1/,/$time2/p' $log 72 | '@ 73 | $sCommand = @{ 74 | SSHSession = $session 75 | Command = $ExecutionContext.InvokeCommand.ExpandString($cmd) 76 | } 77 | $result = Invoke-SSHCommand @sCommand 78 | 79 | Remove-SSHSession -SSHSession $session | Out-Null 80 | 81 | #endregion 82 | 83 | #region Set VCSA logging back to the original setting 84 | 85 | if($logLevel.Value -ne $verboseLevel) { 86 | $sAdvSet = @{ 87 | AdvancedSetting = $logLevel 88 | Value = $loglevel.Value 89 | Confirm = $false 90 | } 91 | Set-AdvancedSetting @sAdvSet 92 | } 93 | 94 | #endregion 95 | 96 | #region The log extract 97 | 98 | $result.Output 99 | 100 | #endregion 101 | -------------------------------------------------------------------------------- /Luc/5 REST/5a Raw/1_WebRequest_Auth.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/cis/rest/com/vmware/cis/session/post/ 2 | 3 | # Authenticate 4 | $user = 'code2020@vsphere.local' 5 | $pswd = 'Code2020!' 6 | 7 | # Get components to construct the URL 8 | $vcsaFQDN = ([uri]$global:DefaultVIServer.ExtensionData.CLient.ServiceUrl).Host 9 | $logonService = 'rest/com/vmware/cis/session' 10 | 11 | # Use basic authentication 12 | $byteCred = [System.Text.Encoding]::UTF8.GetBytes("$($user):$($pswd)") 13 | $b64Cred = [System.Convert]::ToBase64String($byteCred) 14 | 15 | # Call the REST API 16 | $sAuth = @{ 17 | Uri = "https://$vcsaFqdn/$logonService" 18 | Method = 'POST' 19 | Headers = @{ 20 | Authorization = "Basic $b64Cred" 21 | } 22 | } 23 | $reply = Invoke-WebRequest @sAuth 24 | 25 | # Validate response 26 | if ($reply.StatusCode -eq [System.Net.HttpStatusCode]::OK) { 27 | $token = (ConvertFrom-Json -InputObject $reply.Content).Value 28 | $token 29 | } else { 30 | Write-Output "Authenticated failed" 31 | Write-Output " $($reply.StatusCode) - $($reply.StatusDescription)" 32 | } 33 | -------------------------------------------------------------------------------- /Luc/5 REST/5a Raw/2_WebRequest_Auth.ps1: -------------------------------------------------------------------------------- 1 | #requires -Version 6 2 | 3 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/cis/rest/com/vmware/cis/session/post/ 4 | 5 | # Authenticate 6 | $user = 'code2020@vsphere.local' 7 | $pswd = 'Code2020!' 8 | 9 | # Get components to construct the URL 10 | $vcsaFQDN = ([uri]$global:DefaultVIServer.ExtensionData.CLient.ServiceUrl).Host 11 | $logonService = 'rest/com/vmware/cis/session' 12 | 13 | # Create the PSCredential 14 | $pswdSec = ConvertTo-SecureString -String $pswd -AsPlainText -Force 15 | $cred = New-Object -TypeName PSCredential -ArgumentList $user, $pswdSec 16 | 17 | # Call the REST API 18 | $sAuth = @{ 19 | Uri = "https://$vcsaFqdn/$logonService" 20 | Method = 'POST' 21 | Authentication = 'Basic' 22 | Credential = $cred 23 | } 24 | $reply = Invoke-WebRequest @sAuth 25 | 26 | # Validate response 27 | if ($reply.StatusCode -eq [System.Net.HttpStatusCode]::OK) { 28 | $token = (ConvertFrom-Json -InputObject $reply.Content).Value 29 | $token 30 | } else { 31 | Write-Output "Authenticated failed" 32 | Write-Output " $($reply.StatusCode) - $($reply.StatusDescription)" 33 | } 34 | -------------------------------------------------------------------------------- /Luc/5 REST/5a Raw/3_RestMethod_Auth.ps1: -------------------------------------------------------------------------------- 1 | #requires -Version 7 2 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/cis/rest/com/vmware/cis/session/post/ 3 | 4 | # Authenticate 5 | $user = 'code2020@vsphere.local' 6 | $pswd = 'Code2020!' 7 | 8 | # Get components to construct the URL 9 | $vcsaFQDN = ([uri]$global:DefaultVIServer.ExtensionData.CLient.ServiceUrl).Host 10 | $logonService = 'rest/com/vmware/cis/session' 11 | 12 | # Create the PSCredential 13 | $pswdSec = ConvertTo-SecureString -String $pswd -AsPlainText -Force 14 | $cred = New-Object -TypeName PSCredential -ArgumentList $user, $pswdSec 15 | 16 | # Call the REST API 17 | $sAuth = @{ 18 | Uri = "https://$vcsaFqdn/$logonService" 19 | Method = 'POST' 20 | Authentication = 'Basic' 21 | Credential = $cred 22 | SkipHttpErrorCheck = $true 23 | StatusCodeVariable = 'StatusCode' 24 | } 25 | $reply = Invoke-RestMethod @sAuth 26 | 27 | # Validate response 28 | if ($StatusCode -eq [System.Net.HttpStatusCode]::OK) { 29 | $token = $reply.Value 30 | $token 31 | } else { 32 | Write-Output "Authenticated failed" 33 | Write-Output " $($reply.StatusCode) - $($reply.StatusDescription)" 34 | } 35 | -------------------------------------------------------------------------------- /Luc/5 REST/5a Raw/4_RestMethod_Health.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/appliance/rest/appliance/health/system/get/ 2 | 3 | # Get VCSA health 4 | $healthService = 'rest/appliance/health/system' 5 | $sHealth = @{ 6 | Uri = "https://$vcsaFqdn/$healthService" 7 | Method = 'Get' 8 | Headers = @{ 9 | 'vmware-api-session-id' = $token 10 | } 11 | SkipHttpErrorCheck = $true 12 | StatusCodeVariable = 'StatusCode' 13 | } 14 | $reply = Invoke-RestMethod @sHealth 15 | if ($StatusCode -eq [System.Net.HttpStatusCode]::OK) { 16 | Write-Output "System health : $($reply.value)" 17 | } else { 18 | $statusCodeText = [System.Net.HttpStatusCode]$StatusCode 19 | Write-Output "REST API call failed $($StatusCode) - $statusCodeText" 20 | } 21 | -------------------------------------------------------------------------------- /Luc/5 REST/5a Raw/5_RestMethod_DC.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/vcenter/rest/vcenter/datacenter/get/ 2 | 3 | # Get Datacenter list 4 | $dcName = '' 5 | $dcList = 'rest/vcenter/datacenter' 6 | $filter = "filter.names=$dcName" 7 | $sVM = @{ 8 | Uri = "https://$($vcsaFqdn)/$($dcList)?$($filter)" 9 | Method = 'Get' 10 | Headers = @{ 11 | 'vmware-api-session-id' = $token 12 | } 13 | SkipHttpErrorCheck = $true 14 | StatusCodeVariable = 'StatusCode' 15 | } 16 | $reply = Invoke-RestMethod @sVM 17 | if ($StatusCode -eq [System.Net.HttpStatusCode]::OK) { 18 | Write-Output "Datacenter List" 19 | $reply.Value 20 | } else { 21 | $message = "REST API call failed $($StatusCode) - {0}" -f 22 | [System.Net.HttpStatusCode]$StatusCode 23 | Write-Output $message 24 | } 25 | -------------------------------------------------------------------------------- /Luc/5 REST/5a Raw/6_RestMethod_DC_VM.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/vcenter/rest/vcenter/vm/get/ 2 | 3 | # List VM (combine with Datacenter) 4 | 5 | $vmList = 'rest/vcenter/vm' 6 | 7 | ForEach($dc in $replyDC.value){ 8 | $filter = "filter.datacenters=$($dc.datacenter)" 9 | $sVM = @{ 10 | Uri = "https://$($vcsaFqdn)/$($vmList)?$($filter)" 11 | Method = 'Get' 12 | Headers = @{ 13 | 'vmware-api-session-id' = $token 14 | } 15 | SkipHttpErrorCheck = $true 16 | StatusCodeVariable = 'StatusCode' 17 | } 18 | $replyVM = Invoke-RestMethod @sVM 19 | 20 | if ($StatusCode -eq [System.Net.HttpStatusCode]::OK) { 21 | ForEach($vm in $replyVM.value){ 22 | $vm | Select-Object -Property @{N='Datacenter';E={$dc.name}}, 23 | name,power_state 24 | } 25 | } else { 26 | Write-Output "REST API call failed $($StatusCode)" 27 | Write-Output " $([System.Net.HttpStatusCode]$StatusCode)" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Luc/5 REST/5b Services/1_VM_List.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/vcenter/rest/vcenter/vm/get/ 2 | 3 | # List VMs 4 | $user = 'code2020@vsphere.local' 5 | $pswd = 'Code2020!' 6 | 7 | $pswdSec = ConvertTo-SecureString -String $pswd -AsPlainText -Force 8 | $cred = New-Object -TypeName PSCredential -ArgumentList $user, $pswdSec 9 | $vcsaFQDN = ([uri]$global:DefaultVIServer.ExtensionData.Client.ServiceUrl).Host 10 | 11 | $nameSpace = 'com.vmware' 12 | $restUri = 'vcenter.vm' 13 | $listVM = $nameSpace,$restUri -join '.' 14 | 15 | Connect-CisServer -Server $vcsaFQDN -Credential $cred | Out-Null 16 | 17 | $service = Get-CisService -Name $listVM 18 | $service.list() | Select-Object -Property name,power_state 19 | 20 | Disconnect-CisServer -Server $vcsaFQDN -Confirm:$false 21 | -------------------------------------------------------------------------------- /Luc/5 REST/5b Services/2_User_Create.ps1: -------------------------------------------------------------------------------- 1 | Start-Process https://developer.vmware.com/docs/vsphere-automation/latest/appliance/rest/appliance/local-accounts/username/post/ 2 | 3 | # Create local account on VCSA 4 | $user = 'code2020@vsphere.local' 5 | $pswd = 'Code2020!' 6 | 7 | $pswdSec = ConvertTo-SecureString -String $pswd -AsPlainText -Force 8 | $cred = New-Object -TypeName PSCredential -ArgumentList $user,$pswdSec 9 | $vcsaFQDN = ([uri]$global:DefaultVIServer.ExtensionData.Client.ServiceUrl).Host 10 | 11 | $nameSpace = 'com.vmware' 12 | $restUri = 'appliance.local_accounts' 13 | $localUser = $nameSpace,$restUri -join '.' 14 | 15 | $user = "code2020_user$(Get-Random)" 16 | 17 | Connect-CisServer -Server $vcsaFQDN -Credential $cred | Out-null 18 | 19 | $service = Get-CisService -Name $localUser 20 | $config = $service.Help.create.config.CreateExample() 21 | $config.email = "$user.my.domain" 22 | $config.enabled = $true 23 | $config.full_name = "$user Account" 24 | $config.password = [VMware.VimAutomation.Cis.Core.Types.V1.Secret]'VMware1!' 25 | $config.roles += 'admin' 26 | $service.create($user,$config) 27 | 28 | Disconnect-CisServer -Server $vcsaFQDN -Confirm:$false 29 | -------------------------------------------------------------------------------- /Luc/6 Closing/Takeaways.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 30 | 31 | 32 |

CodeConnect 2020

33 |

PowerCLI and the Art of the API

34 |

Luc Dekens

35 |

 

36 |

Takeaways

37 |
38 |
    39 |
  • 40 |

    API are complementary to PS/PCLI

    41 |
  • 42 |
  • 43 |

    API are not hard  (once you get the hang of it)

    44 |
  • 45 |
  • 46 |

    Practice, practice, practice

    47 |
  • 48 |
49 |

 

50 |
51 |

52 | PowerCLI 53 | API Explorer 54 | PowerShell 55 |

56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /Luc/Luc-Dekens.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Luc/Luc-Dekens.jpg -------------------------------------------------------------------------------- /Luc/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **PowerCLI and the Art of the API w/ Luc Dekens** 11 | ### **Time: 9:30-10:00AM PDT** 12 |
13 | To up your PowerCLI game, you ultimately can't avoid getting into the APIs (SOAP and/or REST). While this might seem daunting at first, it really isn't that hard. With some very simple guidelines (and demos) this session will add APIs to your PowerCLI toolbelt.
14 |
15 | Add to Calendar 16 | 17 |
18 |
19 | 20 |
21 | Luc Dekens 22 | 23 |

Meet {code} coach Luc! Recently retired (as of a few months ago, congrats Luc!), Luc was a former systems engineer for almost 3 decades. Over the years, Luc started at Mainframe (OS/360, OS/370, VM) and a Dec PDP11 environment and transitioned to administering different Windows and Unix flavors. He has been using the VMware suite for several years and is currently into PowerShell & automation. Luc specializes in Automation, PowerShell, VMware, PowerCLI, Windows administration, Linux administration. Luc has been active in the VMware community and has even given talks at VMworld. After his talk last year on PowerCLI, a comment was made that because of his accent “Luc must be from Scotland.” Disclaimer Luc actually lives in Belgium!

24 | 25 | -------------------------------------------------------------------------------- /Luc/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Luc/github-site-BG.png -------------------------------------------------------------------------------- /Mark/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Deep dive on Instrumenting your code for distributed tracing w/ Mark Foley** 11 | ### **Time: 3:00-4:00PM PDT** 12 |
13 | In this session we’ll look what distributed tracing is and how it can help you manage performance and find bugs in your code. Topics covered will include:
14 |
    15 |
  • Configuring Tanzu Observability for distributed tracing.
  • 16 |
  • How to go about instrumenting your code with the minimum amount of effort for the maximum return
  • 17 |
  • Monitoring performance and troubleshooting issues using Tanzu Observability tracing capabilities
  • 18 |
19 |

20 | Add to Calendar 21 | 22 |
23 | 24 |
25 |
26 | Mark Foley 27 | 28 |

Mark Foley is a Senior System Engineer at VMware, Inc.

29 | -------------------------------------------------------------------------------- /Mark/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Mark/github-site-BG.png -------------------------------------------------------------------------------- /Mark/mark_foley.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Mark/mark_foley.jpeg -------------------------------------------------------------------------------- /MichaelG/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Let's build a Kubernetes Operator in Go! w/ Michael Gasch & Rafael Brito** 11 | ### **Time: 11:00AM-12:30PM PDT** 12 |
13 | Kubernetes is quickly becoming the standard cloud API for deploying and managing modern workloads. 14 | Fundamentally, end-users express their desired state (application) state which is then reconciled by individual controllers in the platform. 15 | The beauty of this approach, besides its simplicity and robustness, is that it can be extended and used beyond the core Kubernetes types. 16 | In fact, you can create your own APIs on top of Kubernetes for any resource by providing a custom controller logic to handle daily routine tasks or even complex lifecycle operations. 17 | This is also referred to as the ""operator pattern"". 18 | 19 | But how do you get started? What are the tools of the trade and basic primitives that you should understand before writing your first Kubernetes operator? 20 | Even if you are not a (Go) developer, in this session we will walk you through the steps of creating your first operator from scratch by explaining the fundamentals of the Kubernetes platform 21 | and applying our knowledge in a live coding session. 22 |
23 |
24 | Add to Calendar 25 | 26 |
27 |
28 |
29 | Michael Gasch 30 | 31 |

Meet our {code} coach Michael! Michael Gasch is a Staff Engineer in the Office of the CTO at VMware with a focus on event-driven systems, Kubernetes and service mesh. When asked what motivates him to do the work he does, Michael said, ” Growing up in communism (East Germany) before the wall came down I had to wait for my first computer (C64) until the age of 10. I was super curious and there was so much to learn but I never thought I was “smart” enough to learn a programming language like C or Java. So I doubled down on the “ops” side of IT (which is equally important of course). Many years later, when I heard about the Go programming language in the context of Kubernetes, I
pushed myself to learn that language because the Kubernetes docs were missing/incomplete/outdated. Fast forward, I am a distributed systems engineer
at VMware working on Service Mesh. This personal journey drives me to help
everyone with a similar story and background to not be afraid and learn to code.

32 | 33 |
34 | 35 | Rafael Brito 36 | 37 |

Rafael Brito is an Application Platform Architect in the Office of the CTO at VMware, Inc. He has over 25 years of IT experience, including 15+ years of broad-based management in Cloud and Systems Engineering, Client Management & Sales Engineering.

38 | 39 | 40 | -------------------------------------------------------------------------------- /MichaelG/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/MichaelG/github-site-BG.png -------------------------------------------------------------------------------- /MichaelG/michael_gasch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/MichaelG/michael_gasch.png -------------------------------------------------------------------------------- /MichaelG/rafael_brito.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/MichaelG/rafael_brito.jpeg -------------------------------------------------------------------------------- /MichaelG/resources/README.MD: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | Thank you for coming to our talk :) 4 | 5 | Toy VM Operator using kubebuilder for educational purposes presented at VMware 6 | Code Connect 2020. Slides for the talk can be found here. 7 | 8 | The repository used during the talk with step-by-step instructions and the 9 | source code can be found here: https://github.com/embano1/codeconnect-vm-operator -------------------------------------------------------------------------------- /MichaelG/resources/slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/MichaelG/resources/slides.pdf -------------------------------------------------------------------------------- /MichaelR/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Local Kubernetes and Container development with Fusion and Workstation w/ Michael Roy** 11 | ### **Time: 12:30-1:00PM PDT** 12 |
13 | Learn how new capabilities in Fusion and Workstation can deliver Containers and Kubernetes clusters on the Mac or Windows entirely without Docker.
14 |

15 | Add to Calendar 16 | 17 |
18 |
19 | 20 |
21 | Michael Roy 22 | 23 |

In his own words, “By day I manage the VMware Fusion and Workstation product line, by night I am a cancan dancer.” Michael has been a part of the VMware family for over 10 years now and is Responsible for Product Management of VMware Desktop Hypervisor technology products including VMware Fusion, Workstation and Player. He focuses on developer productivity, Kubernetes, and cloud native application development.

24 | 25 | 26 | -------------------------------------------------------------------------------- /MichaelR/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/MichaelR/github-site-BG.png -------------------------------------------------------------------------------- /MichaelR/mike_beardy_smile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/MichaelR/mike_beardy_smile.jpg -------------------------------------------------------------------------------- /Mike/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Making every engineer an automation engineer w/ Mike Garuccio** 11 | ### **Time: 3:00-3:30PM PDT** 12 |
13 | The traditional approach to IT automation has been to build out an “automation team” who owns the creation/maintenance of all automation workflows across the IT organization. This is a great way to concentrate those skillsets and get early wins, but tends to break down at scale since it’s impossible for those teams to be experts at everything they’re being asked to automate. This talk will explore Expedient’s journey of helping all of their infrastructure engineers become automation engineers who leverage their expertise within their specialty to create useful automation workflows that improve their day-to-day productivity and experience.
14 |
15 | Add to Calendar 16 | 17 |
18 |
19 | 20 |
21 | Mike Garuccio 22 | 23 |

Mike Garuccio is a Product Strategy Engineer at Expedient. He is an experienced server administrator and Powershell developer working on utility module creation and infrastructure automation. Currently he is focused on building test-validated modules and scripts that can be used in a continuous integration build process, primarily to automate Windows infrastructure provisioning.

24 | -------------------------------------------------------------------------------- /Mike/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Mike/github-site-BG.png -------------------------------------------------------------------------------- /Mike/mike.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Mike/mike.jpg -------------------------------------------------------------------------------- /Pat/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Day 2 Keynote w/ Pat Gelsinger** 11 | ### **Time: 9:00 - 9:30AM PDT** 12 |
13 | To kick off our second and final day of {code} Connect, Pat will be chatting about the importance of the developer community and an overview of the nwe vSphere. He'll then open up the second half of his keynote to answer some Q&A from the audience. You don't want to miss this event! 14 |
15 |
16 | To kick off our second and final day of {code} Connect, Pat will be giving us an overview of the new vSphere and chatting about the importance of our developer community. He'll then open up the second half of his keynote to answer some Q&A from the audience. You don't want to miss this event! 17 |
18 |
19 |
20 | Add to Calendar 21 | 22 |
23 |
24 |
25 | Pat Gelsinger 26 | 27 |

Pat Gelsinger has been serving as CEO of VMware since September 2012, doubling
the size of the company during his tenure. He brings over 40 years of technology and leadership experience. Before joining VMware, Gelsinger led EMC's Information Infrastructure Products business as president and COO. A respected IT industry veteran, he was at Intel for 30 years becoming the company’s first CTO and driving the creation of key industry technologies including USB and Wi-Fi.

28 | -------------------------------------------------------------------------------- /Pat/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Pat/github-site-BG.png -------------------------------------------------------------------------------- /Pat/pat-gelsinger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Pat/pat-gelsinger.jpg -------------------------------------------------------------------------------- /Patrick/README.md: -------------------------------------------------------------------------------- 1 | 7 |
8 | 9 | ### **Skills modernization for the Virtual Infrastructure Admin w/ Patrick Kremer** 10 | ### **Time: 11:00-11:30AM PDT** 11 |
12 | Code is for everybody! As the world moves toward containers and Kubernetes, the classic virtual infrastructure admin must modernize their skills. However, navigating the cloud native world can be extremely challenging for those from a classic infrastructure background. In this session, Patrick Kremer takes you through his 6-month journey from zero dev skills to open source contributor. Learn how you can also leverage the open source VMware Event Broker Appliance (VEBA) project to learn new developer skills while also improving your ability to respond to infrastructure events.
13 |
14 | Add to Calendar 15 | 16 |
17 |
18 |
19 | Patrick Kremer 20 | 21 |

Patrick Kremer is a Staff Cloud Solution Architect at VMware, Inc.

22 | 23 | 24 | -------------------------------------------------------------------------------- /Patrick/VEBA-dev-skills.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Patrick/VEBA-dev-skills.pdf -------------------------------------------------------------------------------- /Patrick/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Patrick/github-site-BG.png -------------------------------------------------------------------------------- /Patrick/patrick_kremer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Patrick/patrick_kremer.jpg -------------------------------------------------------------------------------- /Registration/README.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | Code Wars Logo 6 | 7 | -------------------------------------------------------------------------------- /Registration/code-wars-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Registration/code-wars-logo.png -------------------------------------------------------------------------------- /Registration/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Registration/github-site-BG.png -------------------------------------------------------------------------------- /Sajal/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Monitoring K8s and TKGI in Modern Datacenter w/ Sajal Debnath** 11 | ### **Time: 10:30-11:00AM PDT** 12 |
13 | With the ever-increasing use of containerized applications, we see a significant proliferation of related technologies in modern datacenters. These latest technologies have brought newer responsibilities for the datacenter teams, for example, monitoring these environments for continuous operation and performance. Since the architecture of these related technologies is different hence their components and monitoring process is also different. One such example is VMware Tanzu Kubernetes Grid Integrated (TKGI), formerly known as Enterprise PKS. VMware Tanzu Kubernetes Grid Integrated or TKGI is a Kubernetes-based container solution with advanced networking, a private container registry, and life cycle management. TKGI simplifies the deployment and operation of Kubernetes clusters so you can run and manage containers at scale on private and public clouds. 14 | 15 | The question under consideration is what to monitor for in the deployed TKGI environment and how to monitor these. The next question is what to do or how to react to the issues we face in the monitored components. 16 | 17 | This session will provide answers to all these questions. It will guide to what to monitor and how to monitor in a datacenter hosting TKGI environment. Also, this document provides best practices and general guidelines for monitoring such an environment. Though there are many ways we can monitor a TKGI environment, this document covers the VMware suite of products that is used to monitor TKGI environment including vRealize Network Insight, vRealize Operations Manager, and vRealize Log Insight. 18 |

19 | Add to Calendar 20 | 21 | 22 |
23 | 24 |
25 | 26 |
27 | Sajal Debnath 28 | 29 |

Sajal Debnath is a highly certified Cloud computing professional with more than 17 years of experience in Cloud computing and related technologies. He is an EMCISA, VCIX-DCV/CMA, RHCE 4/5/6, RHCVA, Openstack, and ITIL certified person. Sajal Debnath is presently associated with VMware Inc. as Staff Architect for last 9 years. He has couple patents pending on Cloud Scale Storage and Storage file system. You can find his book, "Mastering PowerCLI" on google books!

30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Sajal/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sajal/github-site-BG.png -------------------------------------------------------------------------------- /Sajal/sajal_debnath.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sajal/sajal_debnath.jpg -------------------------------------------------------------------------------- /Sam-Tanzu/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Tanzu Kubernetes Grid (TKG) Clusters-as-a-Service w/ Sam McGeown** 11 | ### **Time: 11:30AM-12PM PDT** 12 |
13 | Learn how to automate the deployment of Tanzu Kubernetes Grid Clusters to provide TKG-as-a-Service with vRealize Automation. 14 |

15 | Add to Calendar 16 | 17 |
18 | 19 |
20 | 21 |
22 | Sam McGeown 23 | 24 |

Sam McGeown is a Senior Technical Marketing Manager at VMware, Inc.

25 | -------------------------------------------------------------------------------- /Sam-Tanzu/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam-Tanzu/github-site-BG.png -------------------------------------------------------------------------------- /Sam-Tanzu/sam_mcgeown.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam-Tanzu/sam_mcgeown.jpeg -------------------------------------------------------------------------------- /Sam-Traditional/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Automating Secrets with HashiCorp Vault and vRealize Automation w/ Sam McGeown** 11 | ### **Time: 11:00-11:30AM PDT** 12 |
13 | Learn how to use HashiCorp Vault to manage secrets for your vRealize Automation environment. I will demonstrate how to leverage response wrapping, cubbyholes, approles and policies to ensure your secrets stay that way! 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 |
22 | Sam McGeown 23 | 24 |

Sam McGeown is a Senior Technical Marketing Manager at VMware, Inc.

25 | -------------------------------------------------------------------------------- /Sam-Traditional/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam-Traditional/github-site-BG.png -------------------------------------------------------------------------------- /Sam-Traditional/sam_mcgeown.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam-Traditional/sam_mcgeown.jpeg -------------------------------------------------------------------------------- /Sam/Efy5NvWXgAI_s3e.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam/Efy5NvWXgAI_s3e.jpeg -------------------------------------------------------------------------------- /Sam/IMG_0221.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam/IMG_0221.jpeg -------------------------------------------------------------------------------- /Sam/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Managing Application Upgrades in Kubernetes with Code Stream w/ Sam McGeown** 11 | ### **Time: 10:00-10:30AM PDT** 12 |
13 | In this session I will demonstrate managing application upgrades using vRealize Automation’s pipelining tool, Code Stream, using strategies such as Canary and Blue/Green. 14 | 15 |
16 |
17 | 18 | Add to Calendar 19 | 20 |
21 | 22 |
23 | 24 |
25 | Sam McGeown 26 | 27 |

Sam McGeown is a Senior Technical Marketing Manager at VMware, Inc.

28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Sam/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sam/github-site-BG.png -------------------------------------------------------------------------------- /ScriptCompetition/Entries/Readme.MD: -------------------------------------------------------------------------------- 1 | . 2 | -------------------------------------------------------------------------------- /ScriptCompetition/README.md: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | When the idea was pitched to the VMware{Code} Code Coaches for a Code Connect event I thought it would be fun to have a small scripting contest of the main Hackathon. Since I am employed by ControlUp the idea is to combine this with the script actions that are available in our very own Real-Time Console. I will show a bit later how this works but for me this functionality is super-cool and was on of the the main reasons I wanted to work with ControlUp. 11 | 12 | 13 | 14 | The goal is to create one (more if you have time) script that can be run by right clicking an object in the Console and performing whatever action that you want the script to take. In our community library (or on GitHub) there are over 300 tested and ready to use scripts that have proven themselves for our customers. You can go as crazy as you want. Want to start a docker container doing a full file index when CPU load goes over 50%? No idea why you would want to (to each his own) but if you can script it you can enter it in the contest. Keep in mind, though, that we don't have support for containers at the moment. 15 | 16 | 17 |

Sounds great!, But what is ControlUp?

18 | ControlUp is way more than the EUC monitoring tool you might think it is. With connections to all major hypervisors available it's the perfect tool for managing your virtual infrastructure. With features like Automated Actions, controllers for registry, file system and services an admin’s life can be made infinitely easier. It’s time to do away with all those annoying tickets and focus more on the exciting parts of life. 19 |

Getting started

20 | Note: if you already have an existing ControlUp environment that you can use there's no need to do this again. 21 | 22 | The easiest way to get started (and I know you’re not going to believe this) would be to point to our quick- start guide. But you know what? I don't just want to do that. For this contest, it’s sufficient to have a single domain joined desktop and whatever environment you want to develop the script for. When you have this head over to ControlUp.com to start your free 21 day trial. Enter your email and in just a few minutes, you’ll have a download link in your inbox that includes a short video on how to register. Keep in mind that the trial is for two weeks, so don't start too far in advance of the contest or you will be set back to the basic license level, which doesn’t include some of the features you might need. 23 | 24 | Note: if this happens to you, please contact me in that case and I'll see what I can do for you. 25 | 26 | 27 | 28 | The zip file that you'll download has the ControlUp Console in it, so there’s no need to install anything at first. Just start the Console, create a new account (if you don't already have one), and define an environment name. Make up an organization name and you're done with the first part (yes, it really is that easy). 29 | 30 | Next up is creating folders and adding Computers. If you want you can add your vCenter server and EUC environments. With this you're set to get started on your script. Add at least the computer you are running the console from so you have something to work with. 31 |

Script Actions

32 |

Adding scripts

33 | So, how do we use script actions? First, you'll need to add some to your local library by downloading them or creating your own. Start with clicking the Script actions button. 34 | 35 | 36 | 37 | Once you’ve done that, you can download existing scripts from our repository by clicking “add script” when you find something that interests you.s. These scripts will be available under the Organizational Scripts tab. From  the My Draft Scripts tab. you can create your own scripts (and, not going to lie: it’s really fun). 38 |

Editing Scripts

39 | When you create or edit a script, you will be served a page where you need to define a name and description. If you want to submit scripts to the ControlUp Script Library, be sure to choose these carefully. 40 | 41 | 42 | 43 | Next, you can select what you want to run this script against; the options include Computer, Host, Session, process, and scores of others. Select advanced if you want to run it against multiple types of metrics. What I mean with running against will be explained in the Running Scripts chapter. 44 | 45 | 46 | 47 | Execution context is where the script will run. This can be the machine where the console is running, target machine, or some other machine. :A great option would be a machine that's available in the console that some Powershell modules installed. Security context is the account under which the scripts will run. If we're talking about a Target machine, the script will run under the account that is used for the agent (most likely the network service). If you want to create a specific account to run your scripts under, you'll need to add a monitor and create a shared credential;, both will be explained in the chapter on bonus points. 48 | 49 | Now, we’re cooking with gas! The next screen is where you actually create the script; I would recommend that you use your favorite editor and copy/paste it here. Under “script type,” you can select cmd/VBS/Powershell for the script type you want to run. If you want to use metrics from the Console as an argument in your scripts [in Powershell], you can define them like this: 50 |
[string]$HVConnectionServerFQDN = $args[0]
51 | # username
52 | [string]$HVUsername = $args[1]
53 | # Name of the Desktop pool
54 | [string]$HVDesktopPoolname = $args[2]
55 | # The message as a string
56 | [string]$HVMessage = $args[3]
57 | # Message severity
58 | [string]$HVMessageSeverity = $args[4]
59 | In the end it might look like this: 60 | 61 | 62 | 63 | As always, I recommend documenting your solution in the script itself so it's always visible. This applies even more for the scripting contest since it's quite handy to know what solution you wanted to tackle. 64 | 65 | On the last screen, you can add arguments that can be used in the script. These can come from metrics that we provide in the grid or from manual input by the user with or without a default. The choice that you made at the second screen impacts the available metrics that you can select from the grid here. 66 | 67 | 68 | 69 | 70 | 71 | When you're done hit finish to be able to use the script. 72 |

Using scripts

73 | To use a script right click an object that you want to run the script against, potentially filter for the name in the search box and select the script. 74 | 75 | 76 | 77 | Depending on the arguments you’ve made, you might see a box that prompts you to enter details that were configured in the arguments (or you'll get the results of the script). 78 | 79 | 80 |

Possible bonus points when using Automated Actions

81 | By deploying a so called monitor from ControlUp it's possible to add some very interesting functionality. To make things a little bit more challenging (it's actually very easy to setup a monitor) I'll you you find out yourself on how to do it. 82 | 87 | Triggers are, in essence, tasks that get started when a metric goes over or under a defined threshold. These tasks can be sending emails, recording event logs, or playing a sound, but they can also  run an action, aka a script. If you explain in your script how to use it as an automated action to solve a problem, you might just get some bonus points for it. Popular examples are: paging out all active memory to the swap file when a user disconnects to free up memory or limiting CPU usage for certain processes if they gone haywire. 88 |

Submitting your entry

89 | Just before the event there will be a breakout session with details on how you can submit your entry. 90 |

Judging

91 | The judges will be announced during the event. Due to this being a virtual event, they can't be bribed with booze, beer, stroopwafels (yum!) or other good food, because we can't live on good promises. 92 |

Prizes

93 | The winner will receive a prize, an interview with ControlUp, and will be able to present their script as the next ControlUp Script of the Month (yes, there WILL be a blog)! Maybe—just maybe—we might even throw something in for all contestants. Stay tuned! 94 | -------------------------------------------------------------------------------- /ScriptCompetition/Synatx with Logos_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/ScriptCompetition/Synatx with Logos_White.png -------------------------------------------------------------------------------- /ScriptCompetition/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/ScriptCompetition/github-site-BG.png -------------------------------------------------------------------------------- /ScriptCompetition/logocontrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/ScriptCompetition/logocontrol.png -------------------------------------------------------------------------------- /SessionSlides/Instructions.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Sidney/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Fully Automated App Volumes 4 Application Package Creation w/ Sidney Laan** 11 | ### **Time: 10:00-10:30AM PDT** 12 |
13 | As a consultant I see a lot of our customers struggling with application packaging for their VDI environment. What if we could automate the biggest part of this process? It reduces the application package time, manual clicks, human errors, and reinventing the wheel over and over again. With the use of PowerShell including PowerCLI and App Volumes REST API's the magic happens. 14 |

15 | Add to Calendar 16 | 17 |
18 |
19 | 20 |
21 | Sidney Laan 22 | 23 |

Sidney Laan is a EUC Virtualization Consultant at ITQ.

24 | -------------------------------------------------------------------------------- /Sidney/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sidney/github-site-BG.png -------------------------------------------------------------------------------- /Sidney/sidney_laan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Sidney/sidney_laan.jpg -------------------------------------------------------------------------------- /Troy1/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Building VM templates programmatically with Packer w/ Troy Lindsay** 11 | ### **Time: 11:00-11:30AM PDT** 12 |
13 | End-to-end demonstration of how to build Linux and Windows VM templates programmatically with Packer. 14 | 18 |
19 |
20 | Add to Calendar 21 | 22 |
23 |
24 | 25 |
26 | Troy Lindsay 27 | 28 |

Troy Lindsay is currently a Senior Partner Solutions Architect at Amazon Web Services on the VMware Cloud on AWS team, and enjoys spending most of his days designing products, infrastructure, and tooling with his fantastic team as well as with his awesome counterparts at VMware. Prior to AWS, he was a Principal Cloud Architect at Armor, an active cyber-security company, where he helped design the Armor Complete (secure public cloud) and Armor Anywhere (security as a service) product lines. He was inducted into the VMware vExpert program in March 2018 (https://vexpert.vmware.com/directory/2112)!

29 | 30 | -------------------------------------------------------------------------------- /Troy1/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Troy1/github-site-BG.png -------------------------------------------------------------------------------- /Troy1/troy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Troy1/troy.jpg -------------------------------------------------------------------------------- /Troy2/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Building hybrid solutions with VMware, AWS, & Terraform w/ Troy Lindsay** 11 | ### **Time: 1:30-2:00PM PDT** 12 |
13 | End-to-end demonstration of how to build and deploy a MySQL Server VM in vSphere and an AWS Storage Gateway VM + Amazon S3 bucket for storing backups using Terraform. 14 | 17 |
18 |
19 | Add to Calendar 20 | 21 |
22 |
23 | 24 |
25 | Troy Lindsay 26 | 27 |

Troy Lindsay is currently a Senior Partner Solutions Architect at Amazon Web Services on the VMware Cloud on AWS team, and enjoys spending most of his days designing products, infrastructure, and tooling with his fantastic team as well as with his awesome counterparts at VMware. Prior to AWS, he was a Principal Cloud Architect at Armor, an active cyber-security company, where he helped design the Armor Complete (secure public cloud) and Armor Anywhere (security as a service) product lines. He was inducted into the VMware vExpert program in March 2018 (https://vexpert.vmware.com/directory/2112)!

28 | 29 | -------------------------------------------------------------------------------- /Troy2/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Troy2/github-site-BG.png -------------------------------------------------------------------------------- /Troy2/troy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Troy2/troy.jpg -------------------------------------------------------------------------------- /WWC/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Women Who Code Panel** 11 | ### **Time: 2:30-3:00PM PDT** 12 |
13 | Join Women Who Code, an international non-profit organization that provides services for women pursuing technology careers and a job board for companies seeking coding professionals. The company aims to provide an avenue into the technology world by evaluating and assisting women developing technical skills. They will be hosting a panel of three Sr. City Directors to discuss the efforts they've made in shaping the organization. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 |
22 | Caterina Paun 23 | 24 |

Caterina Paun- Senior Instructor, Computer Science at Portland State University, Senior Director of WWCode Portland
25 | Caterina Paun (she/her) is a developer, designer, speaker, and educator who is passionate about building communities. She currently works as a Senior Instructor in the Computer Science department at Portland State University, where she develops and reaches classes on web development and voice technologies. In the past, she has worked as a front end engineer and UX engineer for various companies, including PlexTV, Sears (digital), and Cisco. She is a Senior Director and co-founder of Women Who Code Portland; in that role, she has spent the last six years building both a community and a leadership team in Portland. She holds a masters from PSU and bachelor degrees in computer science and French from USC. In her free time, she enjoys reading, cooking, and traveling (though not so much these days). 26 |

27 |
28 | 29 | Joey Rosenberg 30 | 31 |

Joey Rosenberg- Chief Leadership Officer at Women Who Code
32 | Joey Rosenberg serves as Chief Leadership Officer for Women Who Code, a global movement that has grown to become the world’s largest and most active community dedicated to inspiring women to excel in technology careers. Joey leads WWCode program, oversees local network operations for 70 volunteer-led cities in 20 countries, and is the visionary behind WWCode innovations like a borderless digital community, deep learning technical tracks, a new model for developing technical leaders, and the WWCode Fellowship program.
Joey’s professional background ranges from startup to Fortune 50 companies and includes roles in executive leadership, marketing, finance, and diversity and inclusion. Joey is an avid volunteer and has served as a World Board Member for the World Association of Girl Guides and Girl Scouts. Her passion for volunteerism and social impact drive her work daily, and has led her to engage in community empowerment projects across the globe. 33 |

34 |
35 | 36 | Jane Shih 37 | 38 |

Jane Shih- Senior Director of WWCode Taipei
39 | Jane is an entrepreneur focused on building a global community for tech professionals, especially for women in tech. She spent 6 years in Silicon Valley at eBay before moving to Taiwan and starting WeTogether.co, a hub for career development for women in tech so industry veterans and newbies to interact with each other, and grow, succeed together. She's currently also serving as the Sr Director of Women Who Code Taipei and Director of APAC, Ladies that UX. 40 |

41 |
42 |
43 |
44 |
45 |
46 |
47 | 48 | 49 | Shwetha Lakshman Rao 50 | 51 |

Shwetha Lakshman Rao- Senior MTS at VMware, Senior Director of WWCode Bangalore
52 | Shwetha has around 14 years of experience and holds a patent on High availability from US patent attorney. Being a tech enthusiast and an active innovator, she has researched and presented her papers in national / international conferences on technologies like IoT, Blockchain, Cloud and pursued PG Diploma in Machine Learning recently. She is one among the judging panel in Smart India Hackathon(one of the biggest hackathon in the world) organized by Govt of India and other hackathons. She is part of the core team driving different technical and D&I initiatives across VMware India. She participates in hackathons and have won 2 awards. She helps fellow members to ideate in number of hackathons and global Borathons. She hosts sessions for passionate engineers to brainstorm ideas addressing multiple technical problem statements.
53 | She has been awarded with VMware’s prestigious “EPIC2” award and several spot awards from VMware.
She has been awarded “#ApplaudHer 2019” from WomenWhoCode for her passion towards technology and empowering women
to grow in technical ladder. She has been invited as motivational speaker in different forums/conferences like Google’s WomenTechMakers , AWS Community day and so on. She is mentoring few women and helping them to grow in career. She is part of “VMInclusion Taara “
a highly impactful initiative from VMware in collaboration with WomenWhoCode which aims at upskill 15,000 women and help them return to work. " 54 |

55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /WWC/caterina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/WWC/caterina.png -------------------------------------------------------------------------------- /WWC/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/WWC/github-site-BG.png -------------------------------------------------------------------------------- /WWC/jane.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/WWC/jane.jpg -------------------------------------------------------------------------------- /WWC/joey.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/WWC/joey.jpeg -------------------------------------------------------------------------------- /WWC/shwetha.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/WWC/shwetha.jpeg -------------------------------------------------------------------------------- /Wayne/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Octant - An open source platform for building Kubernetes UIs w/ Wayne Witzel** 11 | ### **Time: 9:30-10:00AM PDT** 12 |
13 | With so many different resources and custom resources within a Kubernetes cluster it can be difficult to understand how all of these resources are connected and their conditions. Octant is an extensible platform that enables users to better understand and work with their resources in the cluster along with providing a foundation for building custom UIs on top of the Kubernetes API. 14 | 15 | Wayne will show you around Octant and explore how you can build your own user interfaces using plugins.
16 |
17 | Add to Calendar 18 | 19 |
20 |
21 |
22 | Wayne Witzel 23 | 24 |

Wayne Witzel is a Senior Member of Technical Staff at VMware, Inc.

25 | 26 | 27 | -------------------------------------------------------------------------------- /Wayne/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Wayne/github-site-BG.png -------------------------------------------------------------------------------- /Wayne/sophie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Wayne/sophie.jpg -------------------------------------------------------------------------------- /Wayne/wayne_witzel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Wayne/wayne_witzel.jpg -------------------------------------------------------------------------------- /William/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **vSphere and VMware Cloud on AWS Automation Live Coding** 11 | ### **Time: 1:30PM-3PM PDT** 12 |
13 | Do you work with vSphere or VMware Cloud AWS and wish to automate a particular task that you have not been able to figure out? Maybe you are just getting started and looking for some tips or tools on how best to approach a specific problem? Perhaps you are already automating using either vSphere SOAP/REST API or VMware Cloud REST API but you are having issues looking for a specific API? If you have answered yes to any of these questions, this live coding session is for you. I will be using PowerShell/PowerCLI as a way to quickly prototype code during the session, so bring your question and let’s write some code together to help solve your automation tasks! 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 | 20 |
21 | 22 |
23 | William Lam 24 | 25 |

Meet our {code} coach William. William Lam is a Senior Staff Solution Architect working in the VMware Cloud team within the Cloud Platform Business Unit (CPBU) at VMware. He focuses on Automation, Integration and Operation of the VMware Software Defined Datacenter (SDDC). William also has his own website where he shares his knowledge https://www.virtuallyghetto.com/ On weekends, you can see William running Spartan races!

26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /William/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/William/github-site-BG.png -------------------------------------------------------------------------------- /William/william_lam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/William/william_lam.jpg -------------------------------------------------------------------------------- /Wouter-CU/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Wouter/README.md: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 | ### **Horizon Automation: From 101 to Deepdive w/ Wouter Kursten** 11 | ### **Time: 10:30-11:00AM PDT** 12 |
13 | Virtual Session - Horizon Automation: From 101 to Deepdive will provide the attendees with the opportunity to learn how to get started with the VMware Horizon REST and SOAP API's to automate desktop and RDS pool CRUD (create/read/update/delete) operations and find out about the basic principles of the Horizon API and what it takes to get started with their automation project through the PowerCLI and Horizon module in a session full of Live demos. 14 |
15 |
16 | Add to Calendar 17 | 18 |
19 |
20 | 21 |
22 | Wouter Kursten 23 | 24 |

Meet {code} coach Wouter! Wouter is the guru if it’s about the Horizon View Powershell API’s. He created the vCheck for Horizon View and added functions to the vmware.hv.helper module. You can find is work at https://github.com/Magneet or www.retouw.nl. During business hours he works for ControlUP as Professional Services Engineer. Wouter is a WW1 nut that likes to go cycling in the Ypres area.

25 | 26 | -------------------------------------------------------------------------------- /Wouter/VMUG_presentation_Wouter_Kursten_2020_en.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Wouter/VMUG_presentation_Wouter_Kursten_2020_en.pdf -------------------------------------------------------------------------------- /Wouter/Wouter_Kursten_New.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Wouter/Wouter_Kursten_New.jpg -------------------------------------------------------------------------------- /Wouter/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/Wouter/github-site-BG.png -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-hacker 2 | logo: CodeConnect-side-banner-v.4.png 3 | -------------------------------------------------------------------------------- /aj_kuftic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/aj_kuftic.jpg -------------------------------------------------------------------------------- /calendar/README.md: -------------------------------------------------------------------------------- 1 | 4 | Conference Schedule 5 | -------------------------------------------------------------------------------- /calendar/code-conference-schedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/calendar/code-conference-schedule.png -------------------------------------------------------------------------------- /calendar/conference-schedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/calendar/conference-schedule.png -------------------------------------------------------------------------------- /calendar/github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/calendar/github-site-BG.png -------------------------------------------------------------------------------- /code-banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/code-banner.jpg -------------------------------------------------------------------------------- /code-banner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/code-banner2.jpg -------------------------------------------------------------------------------- /code-banner4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/code-banner4.jpg -------------------------------------------------------------------------------- /code-banner5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/code-banner5.jpg -------------------------------------------------------------------------------- /code-banner6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/code-banner6.jpg -------------------------------------------------------------------------------- /code-favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/code-favicon.png -------------------------------------------------------------------------------- /codeconlogo_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/codeconlogo_light.png -------------------------------------------------------------------------------- /codeconlogofinal_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/codeconlogofinal_dark.jpg -------------------------------------------------------------------------------- /control-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/control-up.png -------------------------------------------------------------------------------- /cu2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/cu2.png -------------------------------------------------------------------------------- /favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/favicon-32x32.png -------------------------------------------------------------------------------- /github-banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/github-banner.jpg -------------------------------------------------------------------------------- /github-site-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/github-site-BG.png -------------------------------------------------------------------------------- /github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/github.png -------------------------------------------------------------------------------- /github1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/github1.png -------------------------------------------------------------------------------- /github2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/github2.png -------------------------------------------------------------------------------- /hackathon/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/hackathon/.DS_Store -------------------------------------------------------------------------------- /hackathon/README.md: -------------------------------------------------------------------------------- 1 | # CodeCon Hackathon 2 | 3 | 4 | -------------------------------------------------------------------------------- /ibm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/ibm.png -------------------------------------------------------------------------------- /ibm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/ibm2.png -------------------------------------------------------------------------------- /ivaylo_ivanov.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/ivaylo_ivanov.jpg -------------------------------------------------------------------------------- /joe_houghes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/joe_houghes.png -------------------------------------------------------------------------------- /oct1/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/oct1/.DS_Store -------------------------------------------------------------------------------- /oct1/README.md: -------------------------------------------------------------------------------- 1 | # Day 1 (10/1/20): 2 | ## **vSphere and VMware Cloud on AWS Automation w/ William Lam** 3 | Do you work with vSphere or VMware Cloud AWS and wish to automate a particular task that you have not been able to figure out? Maybe you are just getting started and looking for some tips or tools on how best to approach a specific problem? Perhaps you are already automating using either vSphere SOAP/REST API or VMware Cloud REST API but you are having issues looking for a specific API? If you have answered yes to any of these questions, this live coding session is for you. I will be using PowerShell/PowerCLI as a way to quickly prototype code during the session, so bring your question and let’s write some code together to help solve your automation tasks! 4 | 5 | Zoom Link: vmware.zoom.us/jsdkfslf -------------------------------------------------------------------------------- /oct1/Script Based Competition/README.md: -------------------------------------------------------------------------------- 1 | # Script Based Competition 2 | Put rules etc here -------------------------------------------------------------------------------- /oct1/vSphere and VMware Cloud on AWS Automation/README.md: -------------------------------------------------------------------------------- 1 | # vSphere and VMware Cloud on AWS Automation w/ William Lam 2 | ## Abstract 3 | Do you work with vSphere or VMware Cloud AWS and wish to automate a particular task that you have not been able to figure out? Maybe you are just getting started and looking for some tips or tools on how best to approach a specific problem? Perhaps you are already automating using either vSphere SOAP/REST API or VMware Cloud REST API but you are having issues looking for a specific API? If you have answered yes to any of these questions, this live coding session is for you. I will be using PowerShell/PowerCLI as a way to quickly prototype code during the session, so bring your question and let’s write some code together to help solve your automation tasks! -------------------------------------------------------------------------------- /oct2/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/oct2/.DS_Store -------------------------------------------------------------------------------- /oct2/README.md: -------------------------------------------------------------------------------- 1 | # Day 2 (10/2/20): 2 | ## Tanzu Track 3 | ### **Lets build a Kubernetes Operator in Go! w/ Michael Gasch** 4 | Kubernetes is quickly becoming the standard cloud API for deploying and managing modern workloads. 5 | Fundamentally, end-users express their desired state (application) state which is then reconciled by individual controllers in the platform. The beauty of this approach, besides its simplicity and robustness, is that it can be extended and used beyond the core Kubernetes types. In fact, you can create your own APIs on top of Kubernetes for any resource by providing a custom controller logic to handle daily routine tasks or even complex lifecycle operations. This is also referred to as the "operator pattern". But how do you get started? What are the tools of the trade and basic primitives that you should understand before writing your first Kubernetes operator? Even if you are not a (Go) developer, in this session we will walk you through the steps of creating your first operator from scratch by explaining the fundamentals of the Kubernetes platform and applying our knowledge in a live coding session. 6 | 7 | Zoom Link: vmware.zoom.us/jsdkfslf 8 | 9 | ### **Writing a Kubernetes Validating Admission Controller w/ Eric Shanks** 10 | How do you control what goes into your Kubernetes cluster? How do you ensure that your users are following corporate guidelines for Kubernetes usage? How do you do all this without auditing the environment after the infraction occurred?This session by Eric Shanks, a Senior Field Engineer in the VMware Modern Application Platform Unit, will explore how to build a validating admission controller for use with a Kubernetes cluster. In this session, you’ll learn how to deploy a Python app that can validate Kubernetes API calls and either approve or deny them. You’ll learn how to setup a Kubernetes webhook and most importantly, you’ll learn why you might want to use an admission controller in your environment. 11 | 12 | Zoom Link: vmware.zoom.us/jsdkfslf 13 | 14 | ### **Managing vSphere with Tanzu with a Custom PowerCLI Module w/ David Stamen** 15 | Learn how to leverage VMware PowerCLI to build your own PowerShell module to manage your VMware vSphere with Tanzu environment. 16 | 17 | Zoom Link: vmware.zoom.us/jsdkfslf 18 | 19 | ## Traditional Track 20 | ### **Administration Modernization: Building and Deploying Containers to vSphere Integrated Containers w/ Justin Sider** 21 | Join me as I teach you how to migrate your PowerCLI scripts to run in vSphere Integrated Containers (VIC). Administration Modernization will revolutionize your skillset and jumpstart your career as technology continues to evolve. During the session, I will demonstrate how to deploy a PowerShell/PowerCLI application to VIC. I will highlight some tips and tricks that I have learned in my own course of learning application modernization and how I apply those to PowerCLI." 22 | 23 | Zoom Link: vmware.zoom.us/jsdkfslf 24 | 25 | ### **PowerCLI and the Art of the API w/ Luc Dekens** 26 | To up your PowerCLI game, you ultimately can't avoid getting into the APIs (SOAP and/or REST). While this might seem daunting at first, it really isn't that hard. With some very simple guidelines (and demos) this session will add APIs to your PowerCLI toolbelt. 27 | 28 | Zoom Link: vmware.zoom.us/jsdkfslf 29 | 30 | ### **Horizon Automation: From 101 to Deepdive w/ Wouter Kursten** 31 | Virtual Session - Horizon Automation: From 101 to Deepdive will provide the attendees with the opportunity to learn how to get started with the VMware Horizon REST and SOAP API's to automate desktop and RDS pool CRUD (create/read/update/delete) operations and find out about the basic principles of the Horizon API and what it takes to get started with their automation project through the PowerCLI and Horizon module in a session full of Live demos.  32 | 33 | Zoom Link: vmware.zoom.us/jsdkfslf 34 | 35 | ## Community Track -------------------------------------------------------------------------------- /oct2/community-track/README.md: -------------------------------------------------------------------------------- 1 | # Community Track 2 | ## Session Title Here :) -------------------------------------------------------------------------------- /oct2/tanzu-track/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/oct2/tanzu-track/.DS_Store -------------------------------------------------------------------------------- /oct2/tanzu-track/Lets build a Kubernetes Operator in Go!/README.md: -------------------------------------------------------------------------------- 1 | # Lets build a Kubernetes Operator in Go! w/ Michael Gasch 2 | ## Abstract 3 | Kubernetes is quickly becoming the standard cloud API for deploying and managing modern workloads. 4 | Fundamentally, end-users express their desired state (application) state which is then reconciled by individual controllers in the platform. The beauty of this approach, besides its simplicity and robustness, is that it can be extended and used beyond the core Kubernetes types. In fact, you can create your own APIs on top of Kubernetes for any resource by providing a custom controller logic to handle daily routine tasks or even complex lifecycle operations. This is also referred to as the "operator pattern". But how do you get started? What are the tools of the trade and basic primitives that you should understand before writing your first Kubernetes operator? Even if you are not a (Go) developer, in this session we will walk you through the steps of creating your first operator from scratch by explaining the fundamentals of the Kubernetes platform and applying our knowledge in a live coding session. -------------------------------------------------------------------------------- /oct2/tanzu-track/README.md: -------------------------------------------------------------------------------- 1 | # Tanzu Track 2 | ## Lets build a Kubernetes Operator in Go! w/ Michael Gasch 3 | Kubernetes is quickly becoming the standard cloud API for deploying and managing modern workloads. 4 | Fundamentally, end-users express their desired state (application) state which is then reconciled by individual controllers in the platform. The beauty of this approach, besides its simplicity and robustness, is that it can be extended and used beyond the core Kubernetes types. In fact, you can create your own APIs on top of Kubernetes for any resource by providing a custom controller logic to handle daily routine tasks or even complex lifecycle operations. This is also referred to as the "operator pattern". But how do you get started? What are the tools of the trade and basic primitives that you should understand before writing your first Kubernetes operator? Even if you are not a (Go) developer, in this session we will walk you through the steps of creating your first operator from scratch by explaining the fundamentals of the Kubernetes platform and applying our knowledge in a live coding session. 5 | 6 | Zoom Link: vmware.zoom.us/jsdkfslf 7 | 8 | ## Writing a Kubernetes Validating Admission Controller w/ Eric Shanks 9 | How do you control what goes into your Kubernetes cluster? How do you ensure that your users are following corporate guidelines for Kubernetes usage? How do you do all this without auditing the environment after the infraction occurred?This session by Eric Shanks, a Senior Field Engineer in the VMware Modern Application Platform Unit, will explore how to build a validating admission controller for use with a Kubernetes cluster. In this session, you’ll learn how to deploy a Python app that can validate Kubernetes API calls and either approve or deny them. You’ll learn how to setup a Kubernetes webhook and most importantly, you’ll learn why you might want to use an admission controller in your environment. 10 | 11 | Zoom Link: vmware.zoom.us/jsdkfslf 12 | 13 | ## Managing vSphere with Tanzu with a Custom PowerCLI Module w/ David Stamen 14 | Learn how to leverage VMware PowerCLI to build your own PowerShell module to manage your VMware vSphere with Tanzu environment. 15 | 16 | Zoom Link: vmware.zoom.us/jsdkfslf 17 | -------------------------------------------------------------------------------- /oct2/traditional-track/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/oct2/traditional-track/.DS_Store -------------------------------------------------------------------------------- /oct2/traditional-track/README.md: -------------------------------------------------------------------------------- 1 | # Traditional Track 2 | ## Administration Modernization: Building and Deploying Containers to vSphere Integrated Containers w/ Justin Sider 3 | Join me as I teach you how to migrate your PowerCLI scripts to run in vSphere Integrated Containers (VIC). Administration Modernization will revolutionize your skillset and jumpstart your career as technology continues to evolve. During the session, I will demonstrate how to deploy a PowerShell/PowerCLI application to VIC. I will highlight some tips and tricks that I have learned in my own course of learning application modernization and how I apply those to PowerCLI." 4 | 5 | Zoom Link: vmware.zoom.us/jsdkfslf 6 | 7 | ## PowerCLI and the Art of the API w/ Luc Dekens 8 | To up your PowerCLI game, you ultimately can't avoid getting into the APIs (SOAP and/or REST). While this might seem daunting at first, it really isn't that hard. With some very simple guidelines (and demos) this session will add APIs to your PowerCLI toolbelt. 9 | 10 | Zoom Link: vmware.zoom.us/jsdkfslf 11 | 12 | ## Horizon Automation: From 101 to Deepdive w/ Wouter Kursten 13 | Virtual Session - Horizon Automation: From 101 to Deepdive will provide the attendees with the opportunity to learn how to get started with the VMware Horizon REST and SOAP API's to automate desktop and RDS pool CRUD (create/read/update/delete) operations and find out about the basic principles of the Horizon API and what it takes to get started with their automation project through the PowerCLI and Horizon module in a session full of Live demos.  14 | 15 | Zoom Link: vmware.zoom.us/jsdkfslf -------------------------------------------------------------------------------- /sajal_debnath.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/sajal_debnath.jpg -------------------------------------------------------------------------------- /sidney_laan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/sidney_laan.jpg -------------------------------------------------------------------------------- /swag/README.md: -------------------------------------------------------------------------------- 1 | Order VMware {code} Swag! 2 | 3 | 4 |

Order your VMware {code} hoodie or #CodeConnect Conference T-shirt today!

5 | 11 | 12 | -------------------------------------------------------------------------------- /swag/swag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/swag/swag.jpg -------------------------------------------------------------------------------- /wayne_witzel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/wayne_witzel.jpg -------------------------------------------------------------------------------- /welcome-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/welcome-banner.png -------------------------------------------------------------------------------- /william_lam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/william_lam.jpg -------------------------------------------------------------------------------- /wwc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/wwc.png -------------------------------------------------------------------------------- /wwc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/wwc2.png -------------------------------------------------------------------------------- /zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/zoom.png -------------------------------------------------------------------------------- /zoom2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/zoom2.png -------------------------------------------------------------------------------- /zoombg-final.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmwarecodeconnect/CodeConnect2020/c1812c8f6959e4676e76d9e7dbd22b4a9ca7dd3b/zoombg-final.jpg --------------------------------------------------------------------------------