':type operation_model: dict
:param operation_model: The operation model.  This comes from the
service model, and is the value associated with the operation
name in the service model (i.e ``model[\'operations\'][op_name]``).
:type service_model: botocore.model.ServiceModel
:param service_model: The service model associated with the operation.
:type name: string
:param name: The operation name.  This is the operation name exposed to
the users of this model.  This can potentially be different from
the "wire_name", which is the operation name that *must* by
provided over the wire.  For example, given::
"CreateCloudFrontOriginAccessIdentity":{
"name":"CreateCloudFrontOriginAccessIdentity2014_11_06",
The ``name`` would be ``CreateCloudFrontOriginAccessIdentity``,
but the ``self.wire_name`` would be
``CreateCloudFrontOriginAccessIdentity2014_11_06``, which is the
value we must send in the corresponding HTTP request.'

def __init__(self, operation_model, service_model, name=None):

    self._operation_model = operation_model
    self._service_model = service_model
    self._api_name = name
    self._wire_name = operation_model.get('name')
    self.metadata = service_model.metadata
    self.http = operation_model.get('http', {})
