Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minor updates to ADL specs #253

Merged
merged 23 commits into from Apr 20, 2016
Merged

Minor updates to ADL specs #253

merged 23 commits into from Apr 20, 2016

Conversation

begoldsm
Copy link
Contributor

This set of changes has already been merged as the SDK pieces for node and .NET. Here are the changes:

  1. remove subscription ID from specs that don't need it.
  2. rename "Type" to "JobResourceType" to avoid collisions.
  3. Remove modeling as string as it was unnecessary and made coding against more difficult.
  4. Add a new api version for job APIs which enables proper ISO formatting for date time and duration.
  5. Adding transfer-encoding values to headers for our PUT/PATCH requests that need it. This is a work around for issue: All Stream request body APIs should use Transfer-Encoding:chunked autorest#903
  6. Re-add MSLISTSTATUS now that it is back in the front end.

begoldsm added 22 commits March 24, 2016 13:32
These clients don't need a subscriptionId.
Will add extensions that make it optional in C# and zero it out to an
empty stream.
Issue: Azure/autorest#884 is tracking support
for this being an optional param properly and not resulting in a null
reference. So I will keep this spec as is.
Makes this more obvious to end users and easier to understand.
This API version changes the format for dates and timespan objects to be
ISO compliant.
We need a way to have template parameters not be required when they are
in the host. I will work with Amar for this next week.
Switch over to MSLISTSTATUS which gives more flexibility for listing
files/folders.
explicitly calling out our chunked transfer APIs until issue:
Azure/autorest#903 is resolved.
}
},
"x-ms-parameterized-host": {
"hostTemplate": "{accountName}.{adlaJobDnsSuffix}",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

accountName will be added in the beginning by default. Please specify the positionInOperation: last.

Take a look at the documentation over here: https://github.com/Azure/autorest/blob/master/Documentation/swagger-extensions.md#x-ms-parameterized-host

I think, when the extension was designed initially, it was adding the path parameter in the end. Hence, when the extension was updated, datalake specs were updated accordingly. This seems like a new spec.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I saw that, and we made the (painful) decision to take advantage of your change and move accountName back to the front, since it is much more consistent and in line with what we had in Hyak land. If it makes it more explicit, I can include the positionInOperation: first tag, if you like?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the first is default. So you are good for now.

@amarzavery amarzavery merged commit 706cb8f into Azure:master Apr 20, 2016
"in": "query",
"required": false,
"type": "string",
"description": "The return format. Return the response in particular formatxii without access to request headers for standard content-type negotiation (e.g Orders?$format=json). Optional."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@begoldsm - formatxii. Make the change in your fork, so next time when you send the PR its fixed. Or may be send one; upto you.

"source": {
"type": "string",
"readOnly": true,
"description": "Gets the ultimate source of the failure (usually either SYSTEM or USER)."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@begoldsm - Should this be an enum?
If you think this will have more values, then you can have modelAsString: true for the x-ms-enum. This will atleast provide intellisense for strongly typed languages.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amarzavery Yeah I have talked to our job team about this one for Source, and they aren't ready to commit to an enum yet. Once we have a stronger contract from them we will migrate this value.

blueww pushed a commit to blueww/azure-rest-api-specs that referenced this pull request Dec 8, 2017
* Initial checkin of DMS swagger

* Update readme.md and resourceschemas.md

* moving to correct folder

* Adding x-ms-example to each API

* Replace string with object for example responses.

* Adding missing response codes in examples

* Apply default VS formatting to the Data MIgration Service RP spec.

* Correcting readme.md and renaming to consistent path. (Azure#128)

* Update AutoRest configuration file for DataMigration service

* Fix typo in DMS AutoRest configuration

* Update the AutoRest configuration file for Data Migration service (Azure#131)

* Update AutoRest configuration file for DataMigration service

* Adding Python autorest codegen configuration.

* Fixing the output-folder for Python code-gen.

* Adding Python autorest codegen configuration. (Azure#132)

Adding Python autorest codegen configuration.

* Partition some of the definitions (Azure#3)

- Separate services, tasks and projects
- Extract data models for first few scenarios into separate files

* Add Run Oracle/MySql definitions.

* Adding RunCloudDB and RunMigration scenarios.

* Add Select Oracle, MySql scenarios.

* Change database inputs.

* Add validate scenarios

* Add missing properties.

* Add missing scenarios.

* Fix task output structure.

* Minor fix.

* Minor fixes.

* Project and Connection Info changes

* Project and Connection Info changes

* Move connection info to Common.json

* Change naming conventions.

* Fix issues with merge.

* Fix build

* Change back TaskOutput/TaskResult structure.

* Add support for 3 levels of migration outputs.

* - Remove 'foreign' word references.
- Simplify naming for some scenarios.

* change to use service name in uri

* Remove wrapper object for input.

* Add error outputs to Sql to Sql and Sql to Sql DB scenarios.

* Minor bug fixes.
- Remove unused properties, some renaming.

* Clean up and removing un used def in TasksCommon.json

* Add project to the tasks url

* Remove discriminator type as enum, Swagger 2.0 spec it must be string

* Use same resource for PUT and GET operations for tasks.
- This change makes tasks similar to projects. The same object is used in all operations now. For PUT, some of the properties are not required and have been made read-only.
- Similar to Projects, all the non-common properties are under 'TaskProperties'.

* Revert "Use same resource for PUT and GET operations for tasks."

This reverts commit a7cc0a47f1659edf6d07aa88f351a8e038032e60.

* Changes to make GET/PUT object the same.
Now, based on the TaskProperties object, end user will know the input/output types.

* Minor bug fix.

* Minor fixes based on review comments.

* Fix typo

* Remove unused enum.
Swagger 2.0 does not support adding enums as discriminator.

* Add missing descriptions to fix warnings.

* Remove validationErrors from TaskOutput as it is not common for all task outputs.

* Use correct ConnectionInfo type objects.

* Add SQL as supported project source platform.

* Remove unused objects from TasksCommon.json

* Fix Cloud db output - It also has database level and migration level results.

* Fix SqlConnectionInfo.

* Fix Connect to target scenarios.
1. Rename them to 'ConnectToTarget'.
2. I still have 'ConnectToTarget.AnySql' which will be removed once we refactor Oracle/MySql to use one of the other scenarios.
3. ConnectToTargetSqlDb was missed out. It already exists today, but was missing from the spec.

* Add separate database level and top level objects for ConnectToSource.SqlServer.

This is already implemented, but was missed out from the json.

* Fix description.

* Use common objects where possible for foreign scenarios.

* Update MigrateSqlServerCloudDbTask.json

* Update MigrateSqlServerSqlDbTask.json

* Update MigrateSqlServerSqlServerTask.json

* Putting tasks directly under services as task nesting under project is still not implemented.

* Add property missed out.

* Revert "Add property missed out."

This reverts commit bdb324a86f62977618b6beae802759abb12023a0.

* Add missing property

* Revert "Putting tasks directly under services as task nesting under project is still not implemented."

This reverts commit dea7ea9b7fe2664a7a6bafca6df3b1e106ddd2b9.

* Putting tasks directly under services as task nesting under project is still not implemented.

* Revert "Putting tasks directly under services as task nesting under project is still not implemented."

This reverts commit dea7ea9b7fe2664a7a6bafca6df3b1e106ddd2b9.

* Add missing backupShareUserName property.

* Moving DMS service and Project as Tracked Resource and Task as Proxy Resource as per ARM specs
No changes to JSON structure

* Fix tasks url

* Merge from current (Azure#231)

Merge from Azure/azure-rest-api-specs-pr/current branch

* Change serverDefaultPath to serverDefaultDataPath.

* Fix Autorest linter errors.

* Remove billing 2017-11-01 from some merge in current.

* Update ResourceSchemas.md for datamigration

* Revert files to 'current' branch state.

* Revert package.json to 'current' branch state.

* Added Validation changes

* Fix url - Tasks should be under projects.

* Remove projectName from task input as it can now be obtained from RP as tasks are always nested under projects.

* Revert "Remove projectName from task input as it can now be obtained from RP as tasks are always nested under projects."

This reverts commit d8d3bd3138dc7b897ab226c9939c2c0875ba4eb6.

* Add start/stop action and examples in the Swagger spec.

* Add enums for targets MI and SQL on VM

* Fix bug with nesting of tasks under projects.

* Fix ordering - taskName should be after projectName.

* Update MigrateSqlServerSqlDbTask.json

* Updating the types for migration validation

* Updating description and removed one input from the spec to simplify the input.

* Adding security definition

* Fixing errors and updating types after testing the codegen

* Fix some typos.

* Updating documentation and naming changes missed in the previous commit (Azure#253)

* Updating documentation and naming based on comments from Pavel

* More naming changes

* fixing review comments

* Add new ProvisioningState values and new service status values.

* Remove C# specific comment in REST API

* Fix the name of samples for DMS start/stop.

* Add "force" parameter

* update DataMigrationServiceStatusResponce

* change bool to boolean

* Update DataMigrationServiceStatusResponse

* Make DMS start/stop long running operation. Add missing empty parameters property in the examples.

* Add missing parameters for DMS start/stop endpoint.

* Add skus endpoint in DMS Swagger spec. This is for the supported skus when creating new DMS instance. There is another existing skus endpoint for the supported skus for existing DMS instance.

* Change "force" to "deleteRunningTasks"

* Use discriminator value for base class.
This is based on feedback from ARM team regarding use of polymorphic hierarchy. The concern was about the use case when there are newer task type objects already created using newer sdk, but then the client uses an older sdk to access task. By default, this results in error. This change would handle the error more gracefully.

When we add newer task types, DMS service would have to handle requests based on api version and return base type objects if task is not supported by current api version.

Some of the other options to handle this were:
1. re0turning null from the server or
2. returning an exception or
3. ignoring that object (for get all requests) or
4. creating an "Unknown" discriminator type for returning an object that we don't change in the newer API versions or
5. returning the base class object.

Based on feedback from @johanste, 5. is the preferred option.

* Change UnsupportedTask to Unknown.

* Fix a typo. Use capital SKU for consistency in the descriptions.

* Make the description consistent for minimum and maximum property on ResourceSkuCapacity.

* Change from adding discriminator to base class to creating a new object for unknown type.

Also added input and output properties, since we can still send json object representing input and output.

* Add unknown type connection info object.

* Revert "Add unknown type connection info object."

This reverts commit 483eddf153361c3a32369a3b23760b50e789ba86.

* Revert "Change from adding discriminator to base class to creating a new object for unknown type."

This reverts commit 61ff5ac62de000b2d333d65e9badba7f9051a68e.

* Add unknown discriminator value for ConnectionInfo.

* Separate out public preview api.

- Removed all scenarios other than Sql-to-Sqldb
- Removed project artifacts related api from projects
- Removed MySql/Oracle Connection info objects from Common.json
- Removed objects related to foreign migrations from TasksCommon.json

* Fix bug. Change from privateprewview to preview where required for the public preview files.

* Change version from '2017-04-15-preview' to '2017-11-15-preview'

* Add "provisioningState" in ProjectProperties

* Add read-only property for "deleteRunningTasks"

* Remove unnecessary name field from task input/output.

* Remove unsupported enums from source/target platforms.

* Add readOnly property for provisioningState in Services.json

* Revert "Remove unsupported enums from source/target platforms."

This reverts commit d5622805eee2f74f965217d5dd968388f2cc5ebb.

* Remove unsupported enums from source/target platforms.

* also add "provisioningState" in public review folder

* Add skus endpoint in public preview folder.

* Add unknown to base type for public preview folder.

* Make virtualSubnetId as required.

* Remove unnecessary name field from task input/output.

* Fix formatting.

* Fix syntax error.

* Add size to database level migration output.

* Fix bug with deleteRunningTasks parameter

* Add deleteRunningTasks to common parameters.

* Revert "Add size to database level migration output."

This reverts commit 943ea3992e276b38e755dddeb06b462f0dd49543.

* Add sizeMB to database summary result.

* Update api version in the public preview folder for skus.

* Migration Validation changes (Azure#279)

* Fixing issues and adding missing attributes in the Migration Validation Results

* Updating the proper version for public preview

* Updating the comment text

* Added group permissions to the selectsource elements

* Update public preview files and enumerated the list

* Remove "kind" in the example for skus endpoint.

* Add public preview version to ResourceSchemas.md

* Add Unknown enum for Source and Target platforms.

This would be used for fallback mechanism.
Example -
Lets say, version 2 supports Oracle as source enum and version 1 sdk does not. If you create a project with enum 'Oracle' in sdk version 2 and you try to do a GET project with sdk version 1, then RP will return back enum 'Unknown'.
If user tries to do a PUT followed by GET, it would fail with error based on ARM specification.
(For now, if you do a PUT with Unknown, then it will fail with BadRequest error because Unknown is not a valid enum on backend)

* Modified the descriptions for the groups and refactored necessary groups for the public preview.

* Modified the name of the input for the source

* Add parameter "deleteRunningTasks" to delete task. (Azure#282)

* Add parameter "deleteRunningTask" to delete task.

* 2017-04-privatepreview : Add parameter "deleteRunningTask" to delete task

* Add properties missing from Swagger contract.
The properties added/updated here are already being sent by the back-end.

* Minor change - Remove quotes from boolean value.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants