Cisco

CCNA DevNet Study Guide – Part 1

I will start a series of posts on the new CCNA DevNet certification. I will keep my SOP of going through the curriculum and google the concepts for you. I will try to include Youtube videos of some of the topics that have more hands-on exercises. The certification name is Cisco Certified DevNet Associate. The first topic if about software development and design. It includes some essential topics that I synthesize in the rest of this post.

1.0 Software Development and Design – Compare data formats (XML, JSON, YAML)

The formats XML, JSON, and YAML are data-serialization formats, from Wikipedia: In computer science, in the context of data storage, serialization (or serialisation) is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer) or transmitted (for example, across a network connection link) and reconstructed later (possibly in a different computer environment). When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object.

Mostly you will probably accomplish your task with any of the three. If you are a javascript developer, you will probably feel more comfortable with JSON (JavaScript Object Notation), or if you code in Python, you might stick to YAML (YAML Ain’t Markup Language). The XML (eXtensible Markup Language) format comes from the World Wide Web Consortium (W3C).

One difference between them is the format used by each. The XML uses tags like HTML, JSON uses objects in attribute-value pairs, and YAML uses indentation like Python.

Here is a JSON snippet that I use as part of the Cisco HyperFlex Installation.

{
    "esx": {
        "XX1": {
            "ipaddress": "10.10.10.101",
            "hostname": "ESXi01"
        },
        "XX2": {
            "ipaddress": "10.10.10.102",
            "hostname": "ESXi02"
        },
        "XX3": {
            "ipaddress": "10.10.10.103",
            "hostname": "ESXi03"
        }
    }
}

The previous example means that I have something called “esx”, which is the Hypervisor, and that I have three of them (XX1-XX3). Each has an IP address and a hostname. In XML it should like this:

<?xml version="1.0" encoding="UTF-8"?> 
<esx> 
  <XX1> 
    <hostname>ESXi01</hostname> 
    <ipaddress>10.10.10.101</ipaddress> 
  </XX1> 
  <XX2> 
    <hostname>ESXi02</hostname> 
    <ipaddress>10.10.10.102</ipaddress> 
  </XX2> 
  <XX3> 
    <hostname>ESXi03</hostname>
    <ipaddress>10.10.10.103</ipaddress> 
  </XX3>
</esx>

And in YAML, it should be something like this:

---
esx:
  XX1:
    ipaddress: 10.10.10.101
    hostname: ESXi01
  XX2:
    ipaddress: 10.10.10.102
   hostname: ESXi02
  XX3:
    ipaddress: 10.10.10.103
    hostname: ESXi03

I used two free online tools to convert one format to the other.

  1. https://www.freeformatter.com/json-to-xml-converter.html
  2. https://www.json2yaml.com/

It is recommended to use the builtin libraries and not make your own to avoid mistakes. For example, javascript uses the JSON.parse() method, and python uses the JSON library. Example of use of the JSON library:

import json
json_string = '{"name": "Jason", "last_name":"Parser"}'
parsed_json = json.loads(json_string)
print(parsed_json['name'])
"Jason"

That is all for this post, I will publish periodically to add more sections to the software development and design topic:

  • Describe parsing of common data format (XML, JSON, YAML) to Python data structures
  • Describe the concepts of test-driven development
  • Compare software development methods (agile, lean, waterfall)
  • Explain the benefits of organizing code into methods/ functions, classes, and modules
  • Identify the advantages of common design patterns (MVC and Observer)
  • Explain the advantages of version control
  • Utilize common version control operations with Git
Advertisement

One thought on “CCNA DevNet Study Guide – Part 1

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.