def post(self): node_id = self.request.POST.get('node_id') if node_id is None: return {'ok': False, 'message': 'Missing node ID'} settings = get_current_registry().settings api = get_chef_api(settings, self.request.user) # create chef client chef_client = ChefClient(node_id, api) if chef_client.exists: return {'ok': False, 'message': 'This client already exists'} chef_client = ChefClient.create(node_id, api) # Prepare the API for this client chef_url = settings.get('chef.url') chef_version = settings.get('chef.version') chef_ssl_verify = settings.get('chef.ssl.verify') if chef_ssl_verify == 'False' or chef_ssl_verify == 'True': chef_ssl_verify = bool(chef_ssl_verify) api = ChefAPI(chef_url, chef_client.private_key.encode(), node_id, chef_version, ssl_verify = False) # create chef node chef_node = ChefNode(node_id, api) if chef_node.exists: return {'ok': False, 'message': 'This node already exists'} chef_node.save() return {'ok': True, 'message': 'Node and client have been added', 'client_private_key': chef_client.private_key}
def post(self): node_id = self.request.POST.get('node_id') if node_id is None: return {'ok': False, 'message': 'Missing node ID'} settings = get_current_registry().settings api = get_chef_api(settings, self.request.user) # create chef client chef_client = ChefClient(node_id, api) if chef_client.exists: return {'ok': False, 'message': 'This client already exists'} chef_client = ChefClient.create(node_id, api) # Prepare the API for this client chef_url = settings.get('chef.url') chef_version = settings.get('chef.version') chef_ssl_verify = settings.get('chef.ssl.verify') if chef_ssl_verify == 'False' or chef_ssl_verify == 'True': chef_ssl_verify = bool(chef_ssl_verify) api = ChefAPI(chef_url, str(chef_client.private_key), node_id, chef_version, ssl_verify = False) # create chef node chef_node = ChefNode(node_id, api) if chef_node.exists: return {'ok': False, 'message': 'This node already exists'} chef_node.save() return {'ok': True, 'message': 'Node and client have been added', 'client_private_key': chef_client.private_key}
def test_create(self): name = self.random() client = Client.create(name) self.register(client) self.assertEqual(client.name, name) #self.assertEqual(client.orgname, 'pycheftest') # See CHEF-2019 self.assertTrue(client.private_key) self.assertIn(name, Client.list()) client2 = Client(name) client2.rekey() self.assertNotEqual(client.private_key, client2.private_key)
def test_create(self): name = self.random() client = Client.create(name) self.register(client) self.assertEqual(client.name, name) #self.assertEqual(client.orgname, 'pycheftest') # See CHEF-2019 self.assertTrue(client.private_key) self.assertIn(name, Client.list()) client2 = Client(name) client2.rekey() self.assertNotEqual(client.private_key, client2.private_key)
def create_chef_admin_user(api, settings, usrname, password=None): username = toChefUsername(usrname) if password is None: password = password_generator() data = {'name': username, 'password': password, 'admin': True} chef_user = api.api_request('POST', '/users', data=data) user_private_key = chef_user.get('private_key', None) if user_private_key: save_pem_for_username(settings, username, 'chef_user.pem', user_private_key) chef_client = Client.create(name=username, api=api, admin=True) client_private_key = getattr(chef_client, 'private_key', None) if client_private_key: save_pem_for_username(settings, username, 'chef_client.pem', client_private_key)
def create_chef_admin_user(api, settings, usrname, password=None): username = toChefUsername(usrname) if password is None: password = password_generator() data = {'name': username, 'password': password, 'admin': True} chef_user = api.api_request('POST', '/users', data=data) user_private_key = chef_user.get('private_key', None) if user_private_key: save_pem_for_username(settings, username, 'chef_user.pem', user_private_key) chef_client = Client.create(name=username, api=api, admin=True) client_private_key = getattr(chef_client, 'private_key', None) if client_private_key: save_pem_for_username(settings, username, 'chef_client.pem', client_private_key)
def create_chef_admin_user(api, settings, usrname, password=None, email='*****@*****.**'): username = toChefUsername(usrname) if password is None: password = password_generator() if api.version_parsed >= pkg_resources.parse_version("12.0.0"): # Chef 12 user data data = {'name': username, 'password': password, 'admin': True, 'display_name': username, 'email': email} else: # Chef 11 user data data = {'name': username, 'password': password, 'admin': True} chef_user = api.api_request('POST', '/users', data=data) user_private_key = chef_user.get('private_key', None) if user_private_key: save_pem_for_username(settings, username, 'chef_user.pem', user_private_key) chef_client = Client.create(name=username, api=api, admin=True) client_private_key = getattr(chef_client, 'private_key', None) if client_private_key: save_pem_for_username(settings, username, 'chef_client.pem', client_private_key)
def test_delete(self): name = self.random() client = Client.create(name) client.delete() self.assertNotIn(name, Client.list())
def test_delete(self): name = self.random() client = Client.create(name) client.delete() self.assertNotIn(name, Client.list())