def main(): # Instantiate config object and get settings from CLI args config = provisioner.ConfigManager() config.set_config_from_args() # Get a list of all CSP accounts managed by Halo halo = provisioner.Halo(config) halo.sanity_check() csp_accounts = halo.get_all_csp_accounts() # Get a list of account IDs and account display names from the CSV csv_consumer = provisioner.CsvConsumer(config) csv_tups = csv_consumer.get_account_metadata() # Get lists of accounts to be provisioned and updated blender = provisioner.Blender(csp_accounts, csv_tups) marching_orders = blender.create_change_set() # Perform provisioning in Halo print("Provisioning CSP accounts into Halo group %s with external ID %s." % (config.target_halo_group_id, config.external_id)) for create_target in marching_orders["create"]: print("Provisioning account %s with display name %s" % create_target) if not config.dry_run: halo.provision_csp_account(create_target[0], create_target[1], config.role_name, config.external_id, config.target_halo_group_id) for update_target in marching_orders["update"]: print("Updating account %s with display name %s." % update_target) if not config.dry_run: halo.update_csp_display_name(update_target[0], update_target[1]) return
def test_account_display_name_needs_updating_false(self): row = ('357886268579', 'agseteam1') halo_data = self.get_halo_account_data() csv_data = self.get_csv_update_data() blender = provisioner.Blender(halo_data, csv_data) result = blender.account_display_name_needs_updating(row) assert result is None
def test_account_is_monitored_true(self): row = ('357886268579', 'agseteam1') halo_data = self.get_halo_account_data() csv_data = self.get_csv_update_data() blender = provisioner.Blender(halo_data, csv_data) result = blender.account_is_monitored(row) assert result is True
def test_account_is_monitored_false(self): row = ('abc123', 'unmonitored_account') halo_data = self.get_halo_account_data() csv_data = self.get_csv_update_data() blender = provisioner.Blender(halo_data, csv_data) result = blender.account_is_monitored(row) assert result is False
def test_account_display_name_needs_updating_true(self): row = ('357886268579', 'agseteam12') halo_csp_account_id = "920b3f30-9204-469a-967c-878aa4a77c06" halo_data = self.get_halo_account_data() csv_data = self.get_csv_update_data() blender = provisioner.Blender(halo_data, csv_data) result = blender.account_display_name_needs_updating(row) assert result == halo_csp_account_id
def test_get_change_set(self): """Test change set from blending CSV and existing Halo account info.""" update_tup = ("920b3f30-9204-469a-967c-878aa4a77c07", "oneword") create_tup = ("123123000000", "AccountNameCamelCase") halo_data = self.get_halo_account_data() csv_data = self.get_csv_update_data() blender = provisioner.Blender(halo_data, csv_data) change_set = blender.create_change_set() assert "create" in change_set.keys() assert "update" in change_set.keys() assert update_tup in change_set["update"] assert create_tup in change_set["create"] assert isinstance(change_set["update"][0][0], basestring) assert isinstance(change_set["update"][0][1], basestring) assert isinstance(change_set["create"][0][0], basestring) assert isinstance(change_set["create"][0][1], basestring) assert len(change_set["create"]) == 4 assert len(change_set["update"]) == 1