├── .gitignore ├── README.md ├── Vagrantfile ├── ambari-bootstrap.sh ├── ambari-extras.sh ├── api-examples ├── README.md ├── ambari-api-examples.ipynb ├── ambari-blueprints_field-notes.ipynb ├── ambari-workshop-blueprints.ipynb ├── blueprint_hdp22-single-node-all-services.json ├── blueprint_hdp22-single-node-simple.json ├── blueprint_hdp22-single-node.cluster.json ├── blueprint_hdp22_multinode-simple.blueprint.json ├── blueprint_hdp22_multinode-simple.cluster.json ├── blueprints │ ├── blueprint-config-example.json │ ├── blueprint-hdfs-ha.json │ ├── blueprint-yarn-ha.json │ ├── hdp-201503_blueprint.json │ ├── hdp-201503_cluster.json │ ├── hdp-all.json │ └── single-node │ │ ├── README.md │ │ ├── blueprint.json │ │ ├── cluster.json │ │ └── deploy.sh ├── environment notes.ipynb ├── workshop-hdp22-hive-streaming.ipynb └── workshop-ranger.ipynb ├── deploy ├── README.md ├── configuration-custom.json ├── create_blueprint.py ├── deploy-recommended-cluster.bash └── examples │ └── 201503-ambari2-hdp22 │ ├── blueprint.json │ └── cluster.json ├── extras ├── README.md ├── add-trusted-ca.sh ├── ambari-kerberos-jaas.sh ├── ambari-ldap-ad.sh ├── ambari-ldap-sync.sh ├── ambari-non-root.sh ├── ambari-public-hostname-script.sh ├── ambari-views │ └── create-views.sh ├── ambari.keytab ├── ambari_functions.sh ├── atlas │ └── atlas-hive-enable.sh ├── ca.pem ├── configs │ └── proxyusers.sh ├── deploy │ ├── deploy-hdp.sh │ ├── install-ambari-bootstrap.sh │ └── prep-hosts.sh ├── falcon │ ├── bugfix_oozie-site_elexpression.sh │ ├── create-cluster-dirs.sh │ └── myCluster.xml ├── kerberos │ └── kerberos-hdp-ad-with-ambari.sh ├── onboarding.sh ├── oozie │ ├── proxyusers.sh │ └── replace-mysql-connector.sh ├── ranger │ ├── prep-mysql.sh │ ├── ranger-auth-ad.sh │ ├── ranger-kms.sh │ ├── ranger-ldap.sh │ ├── ranger-plugin-hbase.sh │ ├── ranger-plugin-hdfs.sh │ ├── ranger-plugin-hive.sh │ ├── ranger-plugin-knox.sh │ ├── ranger-plugin-yarn.sh │ ├── ranger-solr-audit.sh │ └── solr-dashboard.sh ├── samples │ ├── Geolocation.zip │ └── sample-data.sh └── sssd-kerberos-ad.sh ├── fabfile.py ├── providers ├── aws │ ├── README.md │ ├── ambari-deploy-blueprint.sh │ ├── aws-cfn_single-node.py │ ├── aws-ec2-image-list.sh │ ├── cfn-generate-template-jumpstart.py │ ├── cfn-generate-template.py │ ├── fabfile.py │ └── generated │ │ ├── cfn-ambari-jumpstart.template-uncompressed.json │ │ ├── cfn-ambari-jumpstart.template.json │ │ ├── cfn-ambari.template-uncompressed.json │ │ └── cfn-ambari.template.json ├── google │ ├── README.md │ ├── create-google-hosts.sh │ ├── metadata-sshkeys │ └── public-hostname.sh └── growroot.sh └── requirements.txt /.gitignore: -------------------------------------------------------------------------------- 1 | .python-version 2 | .vagrant 3 | api-examples/.ipynb_checkpoints 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/README.md -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/Vagrantfile -------------------------------------------------------------------------------- /ambari-bootstrap.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/ambari-bootstrap.sh -------------------------------------------------------------------------------- /ambari-extras.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/ambari-extras.sh -------------------------------------------------------------------------------- /api-examples/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/README.md -------------------------------------------------------------------------------- /api-examples/ambari-api-examples.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/ambari-api-examples.ipynb -------------------------------------------------------------------------------- /api-examples/ambari-blueprints_field-notes.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/ambari-blueprints_field-notes.ipynb -------------------------------------------------------------------------------- /api-examples/ambari-workshop-blueprints.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/ambari-workshop-blueprints.ipynb -------------------------------------------------------------------------------- /api-examples/blueprint_hdp22-single-node-all-services.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprint_hdp22-single-node-all-services.json -------------------------------------------------------------------------------- /api-examples/blueprint_hdp22-single-node-simple.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprint_hdp22-single-node-simple.json -------------------------------------------------------------------------------- /api-examples/blueprint_hdp22-single-node.cluster.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprint_hdp22-single-node.cluster.json -------------------------------------------------------------------------------- /api-examples/blueprint_hdp22_multinode-simple.blueprint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprint_hdp22_multinode-simple.blueprint.json -------------------------------------------------------------------------------- /api-examples/blueprint_hdp22_multinode-simple.cluster.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprint_hdp22_multinode-simple.cluster.json -------------------------------------------------------------------------------- /api-examples/blueprints/blueprint-config-example.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/blueprint-config-example.json -------------------------------------------------------------------------------- /api-examples/blueprints/blueprint-hdfs-ha.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/blueprint-hdfs-ha.json -------------------------------------------------------------------------------- /api-examples/blueprints/blueprint-yarn-ha.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/blueprint-yarn-ha.json -------------------------------------------------------------------------------- /api-examples/blueprints/hdp-201503_blueprint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/hdp-201503_blueprint.json -------------------------------------------------------------------------------- /api-examples/blueprints/hdp-201503_cluster.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/hdp-201503_cluster.json -------------------------------------------------------------------------------- /api-examples/blueprints/hdp-all.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/hdp-all.json -------------------------------------------------------------------------------- /api-examples/blueprints/single-node/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/single-node/README.md -------------------------------------------------------------------------------- /api-examples/blueprints/single-node/blueprint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/single-node/blueprint.json -------------------------------------------------------------------------------- /api-examples/blueprints/single-node/cluster.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/single-node/cluster.json -------------------------------------------------------------------------------- /api-examples/blueprints/single-node/deploy.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/blueprints/single-node/deploy.sh -------------------------------------------------------------------------------- /api-examples/environment notes.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/environment notes.ipynb -------------------------------------------------------------------------------- /api-examples/workshop-hdp22-hive-streaming.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/workshop-hdp22-hive-streaming.ipynb -------------------------------------------------------------------------------- /api-examples/workshop-ranger.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/api-examples/workshop-ranger.ipynb -------------------------------------------------------------------------------- /deploy/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/deploy/README.md -------------------------------------------------------------------------------- /deploy/configuration-custom.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/deploy/configuration-custom.json -------------------------------------------------------------------------------- /deploy/create_blueprint.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/deploy/create_blueprint.py -------------------------------------------------------------------------------- /deploy/deploy-recommended-cluster.bash: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/deploy/deploy-recommended-cluster.bash -------------------------------------------------------------------------------- /deploy/examples/201503-ambari2-hdp22/blueprint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/deploy/examples/201503-ambari2-hdp22/blueprint.json -------------------------------------------------------------------------------- /deploy/examples/201503-ambari2-hdp22/cluster.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/deploy/examples/201503-ambari2-hdp22/cluster.json -------------------------------------------------------------------------------- /extras/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/README.md -------------------------------------------------------------------------------- /extras/add-trusted-ca.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/add-trusted-ca.sh -------------------------------------------------------------------------------- /extras/ambari-kerberos-jaas.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari-kerberos-jaas.sh -------------------------------------------------------------------------------- /extras/ambari-ldap-ad.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari-ldap-ad.sh -------------------------------------------------------------------------------- /extras/ambari-ldap-sync.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari-ldap-sync.sh -------------------------------------------------------------------------------- /extras/ambari-non-root.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari-non-root.sh -------------------------------------------------------------------------------- /extras/ambari-public-hostname-script.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari-public-hostname-script.sh -------------------------------------------------------------------------------- /extras/ambari-views/create-views.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari-views/create-views.sh -------------------------------------------------------------------------------- /extras/ambari.keytab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari.keytab -------------------------------------------------------------------------------- /extras/ambari_functions.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ambari_functions.sh -------------------------------------------------------------------------------- /extras/atlas/atlas-hive-enable.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/atlas/atlas-hive-enable.sh -------------------------------------------------------------------------------- /extras/ca.pem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ca.pem -------------------------------------------------------------------------------- /extras/configs/proxyusers.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/configs/proxyusers.sh -------------------------------------------------------------------------------- /extras/deploy/deploy-hdp.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/deploy/deploy-hdp.sh -------------------------------------------------------------------------------- /extras/deploy/install-ambari-bootstrap.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/deploy/install-ambari-bootstrap.sh -------------------------------------------------------------------------------- /extras/deploy/prep-hosts.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/deploy/prep-hosts.sh -------------------------------------------------------------------------------- /extras/falcon/bugfix_oozie-site_elexpression.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/falcon/bugfix_oozie-site_elexpression.sh -------------------------------------------------------------------------------- /extras/falcon/create-cluster-dirs.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/falcon/create-cluster-dirs.sh -------------------------------------------------------------------------------- /extras/falcon/myCluster.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/falcon/myCluster.xml -------------------------------------------------------------------------------- /extras/kerberos/kerberos-hdp-ad-with-ambari.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/kerberos/kerberos-hdp-ad-with-ambari.sh -------------------------------------------------------------------------------- /extras/onboarding.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/onboarding.sh -------------------------------------------------------------------------------- /extras/oozie/proxyusers.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/oozie/proxyusers.sh -------------------------------------------------------------------------------- /extras/oozie/replace-mysql-connector.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/oozie/replace-mysql-connector.sh -------------------------------------------------------------------------------- /extras/ranger/prep-mysql.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/prep-mysql.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-auth-ad.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-auth-ad.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-kms.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-kms.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-ldap.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-ldap.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-plugin-hbase.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-plugin-hbase.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-plugin-hdfs.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-plugin-hdfs.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-plugin-hive.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-plugin-hive.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-plugin-knox.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-plugin-knox.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-plugin-yarn.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-plugin-yarn.sh -------------------------------------------------------------------------------- /extras/ranger/ranger-solr-audit.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/ranger-solr-audit.sh -------------------------------------------------------------------------------- /extras/ranger/solr-dashboard.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/ranger/solr-dashboard.sh -------------------------------------------------------------------------------- /extras/samples/Geolocation.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/samples/Geolocation.zip -------------------------------------------------------------------------------- /extras/samples/sample-data.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/samples/sample-data.sh -------------------------------------------------------------------------------- /extras/sssd-kerberos-ad.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/extras/sssd-kerberos-ad.sh -------------------------------------------------------------------------------- /fabfile.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/fabfile.py -------------------------------------------------------------------------------- /providers/aws/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/README.md -------------------------------------------------------------------------------- /providers/aws/ambari-deploy-blueprint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/ambari-deploy-blueprint.sh -------------------------------------------------------------------------------- /providers/aws/aws-cfn_single-node.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/aws-cfn_single-node.py -------------------------------------------------------------------------------- /providers/aws/aws-ec2-image-list.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/aws-ec2-image-list.sh -------------------------------------------------------------------------------- /providers/aws/cfn-generate-template-jumpstart.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/cfn-generate-template-jumpstart.py -------------------------------------------------------------------------------- /providers/aws/cfn-generate-template.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/cfn-generate-template.py -------------------------------------------------------------------------------- /providers/aws/fabfile.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/fabfile.py -------------------------------------------------------------------------------- /providers/aws/generated/cfn-ambari-jumpstart.template-uncompressed.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/generated/cfn-ambari-jumpstart.template-uncompressed.json -------------------------------------------------------------------------------- /providers/aws/generated/cfn-ambari-jumpstart.template.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/generated/cfn-ambari-jumpstart.template.json -------------------------------------------------------------------------------- /providers/aws/generated/cfn-ambari.template-uncompressed.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/generated/cfn-ambari.template-uncompressed.json -------------------------------------------------------------------------------- /providers/aws/generated/cfn-ambari.template.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/aws/generated/cfn-ambari.template.json -------------------------------------------------------------------------------- /providers/google/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/google/README.md -------------------------------------------------------------------------------- /providers/google/create-google-hosts.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/google/create-google-hosts.sh -------------------------------------------------------------------------------- /providers/google/metadata-sshkeys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/google/metadata-sshkeys -------------------------------------------------------------------------------- /providers/google/public-hostname.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/google/public-hostname.sh -------------------------------------------------------------------------------- /providers/growroot.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seanorama/ambari-bootstrap/HEAD/providers/growroot.sh -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | troposphere 2 | boto 3 | fabric 4 | awscli 5 | --------------------------------------------------------------------------------