{ "info": { "author": "Waterbear Cloud", "author_email": "hello@waterbear.cloud", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" ], "description": "# aim.models\n\nAn object model for semantic cloud infrastructure.\n\n`aim.models` parses a directory of YAML files that compose an AIM Project and loads them\ninto a complete object model.\n\n\n## What's in the model?\n\nThe model defines common logical cloud infrastructure concepts, such as networks, accounts,\napplications and environments.\n\nThe model uses network and applications as hierarchical trees of configuration that can\nhave their values over rode when they are placed into environments. Environments live in a\nnetwork and contain applications, and typically represent the stages of the software development\nlifecycle (SDLC), such as 'development', 'staging' and 'production'.\n\nThe model has a declarative schema that explicitly defines the fields for each object type in the model.\nThis schema declares not only type (e.g. string, integer) but can also declare defaults, min and max values,\nconstrain to specific values, and define invariants that ensure that if one field has a specific value, another\nfields value is compatabile with that. The model will validates these fields when it loads an AIM Project.\n\n\n## Developing\n\nInstall this package with your Python tool of choice. Typically set-up a virtualenv\nand pip install the dependencies in there:\n\n python -m venv env\n\n ./env/bin/pip install -e .\n\nThere are unit tests using PyTest. If you are using VS Code you can turn on the\n\"Py Test Enabled\" setting and run \"Discover Unit Tests\" command.\n\n\nChangelog for aim.models\n=================\n\n6.0.0 (2019-09-27)\n------------------\n\n### Added\n\n- ICloudWatchAlarms have `enable_ok_actions` and `enable_insufficient_data_actions` booleans\n that will send to the notification groups when the alarm enters the OK or INSUFFICIENT_DATA states.\n\n- `references.get_model_obj_ref` will resolve an aim.ref to a model object\n and won't attempt to do Stack output lookups.\n\n- Service plug-ins are loaded according to an `initilization_order` integer\n that each plug-in can supply. If no integer is supplied, loading for unordered\n plug-ins count up from 1000.\n\n- Minimal API Gateway models for Methods, Resources, Models and Stages.\n\n- S3Bucket NotificationConfiguration for Lambdas.\n\n- S3Bucket has `get_bucket_name()` to return the full computed bucket name.\n\n- IGlobalResources for project['resource'] to contain config from the ./Resources/ directory.\n Resources such as S3 and EC2 now implement INamed and are loaded into project['resource'].\n\n- ISNSTopic has `cross_account_access` which grants `sns:Publish` to all accounts in the AIM Project.\n\n- IAccountContainer and IRegionContainer are lightweight containers for account and region information.\n They can be used by Services that want to set-up Resources in a multi-account, multi-region manner.\n\n### Changed\n\n- CloudTrail defines CloudWatchLogGroup as a sub-object rather than an aim.ref.\n\n- Alarms have `get_alarm_actions_aim_refs` renamed from `get_alarm_actions` as alarms can only provide\n aim.refs and need to get the ARNs from the stacks.\n\n- NotificationGroups are now Resources. Now they have regular working aim.ref's.\n\n5.0.0 (2019-08-26)\n------------------\n\n### Added\n\n- New field `aim.models.reference.FileReference` which resolves the path and replaces\n the original value with the value of the file indicated by the path.\n IApiGatewayRestApi.body_file_location uses this new field.\n\n- ApiGatewayRestApi and CloudWatchAlarm have a `cfn_export_dict` property that\n returns a new dict that can be used to created Troposphere resources.\n\n- Added external_resource support to the ACM\n\n- Added ReadOnly support to the Administrator IAMUserPermission\n\n### Changed\n\n - Multi-Dimension Alarms now need to specify an `aim.ref` as the Value.\n\n- Added IAMUser schemas and loading for IAM users.\n\n- Added a CommaList() schema type for loading comma separated lists into schema.List()\n\n- Moved aim reference generation into the Model. Model objects now have .aim_ref and\n .aim_ref_parts properties which contain their aim.ref reference.\n\n### Fixed\n\n- Invariants were not being check for resources. Invariants need to be checked by the\n loader if they are not contained in a `zope.schema.Object` field, which will run the\n check behind the scenes.\n\n### Changed\n\n- Renamed project['ne'] to project['netenv']\n\n- Modified NatGateway segments to aim references\n\n4.0.0 (2019-08-21)\n------------------\n\n### Added\n\n - IVPCPeering and IVPCPeeringRoute have been added to the model for VPC Peering support.\n\n - Added a CloudTrail schema configured in `Resources/CloudTrail.yaml`.\n\n - IS3BucketPolicy now has `principal` and `condition` fields.\n `principal` can be either a Key-Value dictionary, where the key is either 'AWS', 'Service', etc.\n and the value can be either a String or a List. It is an alternate to the `aws` field, which will\n remain for setting simpler AWS-only principals.\n The `condition` field is a Key-Value dictionary of Key-Value filters.\n\n - Alarm now has 'get_alarm_actions' and 'get_alarm_description' to help construct alarms.\n\n - CloudTrail has a 'get_accounts' which will resolve the CloudTrail.accounts field to a list\n of Account objects in the model.\n\n - IAlarm has `description` and `runbook_url` fields.\n\n - CodePipeBuildDeploy.resolve_ref() function covers wider scope of ref lookups\n\n - Added VPCPeering to the model.\n\n - Added IElastiCache and IElastiCacheRedis to the model.\n\n### Changed\n\n - `MonitorConfig/LogSets.yaml` has been renamed to `MonitorConfig/Logging.yaml`. CloudWatch\n logging is under the top level `cw_logging` key. The schema has been completely reworked\n so that LogGroups and LogSets are properly modelled.\n\n - IAccount.region, IEC2KeyPair.region and ICredentials.aws_default_region no longer have\n `us-west-2` as a default. The region needs to be explicity set.\n\n### Fixed\n\n - IAlarm.classification is now a required field.\n\n\n3.1.0 (2019-08-08)\n------------------\n\n### Added\n\n- aim-project-version.txt file in the root directory can now contain the AIM Project YAML\n version. IProject now has an aim_project_version field to store this value.\n\n- ICloudWatchAlarm gets a namespace field. Can be used to override the default\n Resource namespace, for example, use 'CWAgent' for the CloudWatch agent metrics.\n\n- IResource now has a resource_fullname field. The fullname is the name needed to\n specify for a metric in a CloudWatch Alarm.\n\n- ICloudWatchAlarm now has a dimensions field, which is a List of Dimension objects.\n\n- ITargetGroup now inherits from IResource. It loads resource_name from outputs.\n\n\n3.0.0 (2019-08-06)\n------------------\n\n### Added\n\n- New `MonitorConfig/NotificationGroups.yaml` that contains subscription groups for notifications.\n\n- sdb_cache field for Lambda.\n\n- Lambda can have alarms.\n\n- ISNSTopic and ISNSTopicSubscription to model SNS.\n\n### Changed\n\n- All references have been renamed to start with ``aim.ref`` for consistency.\n\n- AlarmSets, AlarmSet and Alarm all now implement INamed and\n are locatable in the model\n\n- Service plugins can load their outputs\n\n\n2.0.0 (2019-07-23)\n------------------\n\n### Added\n\n- Schema for Notifications for subscribing to Alarms\n\n- Added S3Resource for Resources/S3.yml configuration\n\n- Added Lambda resolve_ref support\n\n### Changed\n\n- Services are loaded as entry_point plugins named `aim.services`\n\n- Refactored the models applications, resources, and services.\n\n- Renamed IRoute53 to IRoute53Resource.\n\n### Fixed\n\n - CloudWatchAlarms now validate a classification field value of\n 'performance', 'health' or 'security' is supplied.\n\n\n1.1.0 (2019-07-06)\n------------------\n\n### Added\n\n- Added function.ref to be able to look-up latest AMI IDs\n\n- Added more constraints to the schemas.\n\n- Added default to IS3Bucket.policy\n\n- Added Route53 to schema and model\n\n- Added redirect to Listner rules in the ALB\n\n### Changed\n\n- Description attribute for Fields is now used to describe constraints.\n\n- Ported CodeCommit to schema and model\n\n- Refactored S3 to use Application StackGroup\n\n- CPBD artifacts s3 bucket now uses S3 Resource in NetEnv yaml instead\n\n- Converted the ALB's listener and listener rules to dicts from lists\n\n### Removed\n\n- Removed unused yaml config from aimdemo under fixtures.\n\n\n1.0.1 (2019-06-19)\n------------------\n\n- Improvements to Python packaging metadata.\n\n\n1.0.0 (2019-06-19)\n------------------\n\n- First open source release", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/waterbear-cloud/aim.models", "keywords": "AWS,Cloud,Infrastructure-as-Code", "license": "", "maintainer": "", "maintainer_email": "", "name": "aim.models", "package_url": "https://pypi.org/project/aim.models/", "platform": "", "project_url": "https://pypi.org/project/aim.models/", "project_urls": { "Homepage": "https://github.com/waterbear-cloud/aim.models" }, "release_url": "https://pypi.org/project/aim.models/6.0.0/", "requires_dist": null, "requires_python": "", "summary": "aim.models: Semantic cloud infrastructure configuration file format and object model", "version": "6.0.0" }, "last_serial": 5894799, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "2847b6f9895933b7fa65ebbf9be62f49", "sha256": "690c427210846e07415bcd2c4ed8c29cab436f71b42205e7dda7cb396aa8c036" }, "downloads": -1, "filename": "aim.models-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2847b6f9895933b7fa65ebbf9be62f49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35457, "upload_time": "2019-06-20T00:11:23", "url": "https://files.pythonhosted.org/packages/57/8f/75c05948198a4d8ba69ff719fa3e56b6732b3d2527c480d0fec0cff92633/aim.models-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b3050d07c4e0b5757cb5d4efb21c06e9", "sha256": "ce752bba6d74ba7fbcfa7399802e9bc93e73a82e93028253cb35082e5d8e0342" }, "downloads": -1, "filename": "aim.models-1.0.1.tar.gz", "has_sig": false, "md5_digest": "b3050d07c4e0b5757cb5d4efb21c06e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36156, "upload_time": "2019-06-20T00:24:00", "url": "https://files.pythonhosted.org/packages/58/6c/861537d464d95fad2e6558dce4165cfe89e88430605ba3d5e2ca23e25e97/aim.models-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "4432475a256e1c9edeb6a3cad1523f46", "sha256": "d860a1006738889f53b320759a539bea7482223d7fdda05c0ce219cf4ca7936f" }, "downloads": -1, "filename": "aim.models-1.1.0.tar.gz", "has_sig": false, "md5_digest": "4432475a256e1c9edeb6a3cad1523f46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39484, "upload_time": "2019-07-06T19:07:25", "url": "https://files.pythonhosted.org/packages/d0/14/a1a236c9bc65b18f7c808a4414e90c2492f9793148b4dd72401edd91edd0/aim.models-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "940c22db2a61df7e982a8e9f99053af0", "sha256": "bb62c3a5cd46c78467425870e976c7be306ac9282a1c2bbc87bbb034ac6e7153" }, "downloads": -1, "filename": "aim.models-2.0.0.tar.gz", "has_sig": false, "md5_digest": "940c22db2a61df7e982a8e9f99053af0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42791, "upload_time": "2019-07-23T19:25:29", "url": "https://files.pythonhosted.org/packages/61/9b/ff576c5387af0a267851dadd8622ec72ae8ae944eb6cee8f89d0b936bae6/aim.models-2.0.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "25e060733940242628196016186cb8de", "sha256": "3d9bd6a73a4f10dda299b46e880af4fe0e1fd556a58fcf95a40ac90273cfef31" }, "downloads": -1, "filename": "aim.models-3.0.0.tar.gz", "has_sig": false, "md5_digest": "25e060733940242628196016186cb8de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47099, "upload_time": "2019-08-06T20:38:21", "url": "https://files.pythonhosted.org/packages/e5/60/91037bd7cd3cab52298c2209717799f882307c7dc6809f3fd2b9e9bdb61f/aim.models-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "261bbdcc0139621848dec0c0c41ba9c5", "sha256": "38052fd39efd5bb95e471cec39742030f123c42160b012cb354642e53606aaa8" }, "downloads": -1, "filename": "aim.models-3.1.0.tar.gz", "has_sig": false, "md5_digest": "261bbdcc0139621848dec0c0c41ba9c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48294, "upload_time": "2019-08-08T19:29:32", "url": "https://files.pythonhosted.org/packages/46/98/121139e4e993eafdd6f2f8c9c268a5bc4ffb5d9d508f84ceb51f918b0156/aim.models-3.1.0.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "004f011109f7cc1909c052c450406888", "sha256": "3484369777ea5e3df11a6a94c199c1402c573a85fba8a317c3ce9475c01d6616" }, "downloads": -1, "filename": "aim.models-4.0.0.tar.gz", "has_sig": false, "md5_digest": "004f011109f7cc1909c052c450406888", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57790, "upload_time": "2019-08-21T18:50:15", "url": "https://files.pythonhosted.org/packages/c0/7d/cf294e694dc408f709ca98f80896e1545c7b1225a7ab8c49f9d7d3888904/aim.models-4.0.0.tar.gz" } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "9c8dead5fafd1f651044857970006960", "sha256": "03e3b076df8407c02f6326fbaa5d0b7f59b98640e91c81a65736e2b0de168440" }, "downloads": -1, "filename": "aim.models-5.0.0.tar.gz", "has_sig": false, "md5_digest": "9c8dead5fafd1f651044857970006960", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64602, "upload_time": "2019-08-26T20:17:46", "url": "https://files.pythonhosted.org/packages/5f/d6/de0460ff590d7910f692f03cc158f43247c5de6d0f16652f3c61cecc890b/aim.models-5.0.0.tar.gz" } ], "6.0.0": [ { "comment_text": "", "digests": { "md5": "4d7ab6b292ba5da1ec401c9c94457cf6", "sha256": "e750e2f38c61f93ed2c9111259a0a93bf3daa722ffe549f583756b0c44010b17" }, "downloads": -1, "filename": "aim.models-6.0.0.tar.gz", "has_sig": false, "md5_digest": "4d7ab6b292ba5da1ec401c9c94457cf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80374, "upload_time": "2019-09-27T08:06:28", "url": "https://files.pythonhosted.org/packages/70/76/2a4ad9b8b558e83380905f512fabca1384a0eddc12ab096660e0b06326e3/aim.models-6.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4d7ab6b292ba5da1ec401c9c94457cf6", "sha256": "e750e2f38c61f93ed2c9111259a0a93bf3daa722ffe549f583756b0c44010b17" }, "downloads": -1, "filename": "aim.models-6.0.0.tar.gz", "has_sig": false, "md5_digest": "4d7ab6b292ba5da1ec401c9c94457cf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80374, "upload_time": "2019-09-27T08:06:28", "url": "https://files.pythonhosted.org/packages/70/76/2a4ad9b8b558e83380905f512fabca1384a0eddc12ab096660e0b06326e3/aim.models-6.0.0.tar.gz" } ] }