devigned / profile-playground

2 stars 1 forks source link

Prototype for Azure ARM Profiles

Azure Profiles provide a set of ARM Resource Type, Version combinations, which represent a long term supported set of APIs. That is to say, for a given Azure Profile, we may need to combine any set of resource types (Microsoft.Compute/VirtualMachine, Microsoft.Compute/Disk, etc...) and ARM API versions.

Valid sets would look like the following:

{
    "resourceTypeVersions": {
        "Microsoft.Compute/VirtualMachine": "2016_01_31",
        "Microsoft.Compute/Disk": "2016_06_30"
    }
}

Note: the resource type name is a key and can't be repeated

Profiles are used to provide hybrid cloud spanning sets of APIs to ensure cross cloud usability of tools. These prototypes have been created to explore the optimal way of exposing these features to cloud developers.

I will refer to client libaries throughout this prototype. This specifically means the code and semantic versioning of the publicly published Nuget and Rubygems packages. The semantic version of these packages is not tied to the API versions included in the package, but rather the code surface exposed publicly to the developer (excluding the Latest Profile -- see the Goals section for details). It is expected the client libraries will contain all known API versions and resource types to date, or at a minimum all API versions which are used by Azure Profiles.

Goals

Statically Typed Prototype: .NET

Provides an example of a staticly typed language prototype located here.

Dynamically Typed Prototype: Ruby

Provides an example of a dynamic typed language prototype located here.