def validate_params(module, service, operation_name, args, **awsparams): profile = awsparams.get('profile_name') session = Session(profile=profile) if service not in session.get_available_services(): module.fail_json(msg='Invalid Service Name: {0}'.format(service)) service_model = session.get_service_model(service) op_names = list(service_model.operation_names) if operation_name not in op_names: module.fail_json( msg='Invalid Operation Name: {0} for Service: {1}'.format( operation_name, service)) op_model = service_model.operation_model(operation_name) shape_members = dict(op_model.input_shape.members) required_members = list(op_model.input_shape.required_members) if 'DryRun' not in shape_members: args.pop('DryRun') bad_params = set(args.keys()) - set(shape_members.keys()) if bad_params: module.fail_json( msg='Invalid Argument(s): {0} for Service Operation: {1}'.format( ", ".join(bad_params), operation_name)) missing_params = set(required_members) - set(args.keys()) if missing_params: module.fail_json( msg='Missing Required Argument(s): {0} for Service Operation: {1}'. format(", ".join(missing_params), operation_name)) return args
def test_tagged_union_member_name_does_not_coincide_with_unknown_key(self): # This test ensures that operation models do not use SDK_UNKNOWN_MEMBER # as a member name. Thereby reserving SDK_UNKNOWN_MEMBER for the parser to # set as a key on the reponse object. This is necessary when the client # encounters a member that it is unaware of or not modeled. session = Session() for service_name in session.get_available_services(): service_model = session.get_service_model(service_name) for shape_name in service_model.shape_names: shape = service_model.shape_for(shape_name) if hasattr(shape, 'is_tagged_union') and shape.is_tagged_union: self.assertNotIn('SDK_UNKNOWN_MEMBER', shape.members)
def _all_services(): session = Session() service_names = session.get_available_services() for service_name in service_names: yield session.get_service_model(service_name)
import argparse import jinja2 def striphtml(data): p = re.compile(r'<.*?>') return p.sub('', data) def convert(name): s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() session = Session() allservices = session.get_available_services() parser = argparse.ArgumentParser(description="Generate aws stackstorm actions") parser.add_argument('-d', '--outputdir', default="actions", help="base output directory") parser.add_argument('-s', '--service', default=None, help="service to generate actions for (eg s3)") parser.add_argument('-v', '--version', required=True, help="pack version to generate") args = parser.parse_args()
# print "outputdir: %s" % outputdir # print "myservice: %s" % myservice try: os.stat(outputdir) except: # noqa: E722 os.mkdir(outputdir) templateLoader = jinja2.FileSystemLoader(searchpath="templates") templateEnv = jinja2.Environment(loader=templateLoader) session = Session() if myservice is None: myservices = session.get_available_services() else: myservices = [myservice] for myservice in myservices: print "%s:" % myservice try: mysrv = session.get_service_model(myservice) except botocore.exceptions.UnknownServiceError as e: print "\n%s\n" % e sys.exit(1) for op in mysrv.operation_names: # pylint: disable=not-an-iterable allvars = {} allvars['paramsreq'] = []
def _all_services(): session = Session() service_names = session.get_available_services() return [session.get_service_model(name) for name in service_names]