def _cosmos_create(self, file_name):
        # Step 1: interact with the namenode
        url = self.cosmos_url + '/webhdfs/v1' + self.base_dir + '/' + file_name + '?op=create&user.name=' + self.cosmos_user
        r = do_put(self.logger, url)
        if r.status_code != 307:
            raise Exception('expecting 307 but getting ' + str(r.status_code))

        url = self.cosmos_url + '/webhdfs/v1' + self.base_dir + '/' + file_name + '?op=create&user.name=' + self.cosmos_user + '&data=true'
        headers = {'Content-Type': 'application/octet-stream'}
        r = do_put(self.logger, url, headers=headers)
        if r.status_code != 201:
            raise Exception('expecting 201 but getting ' + str(r.status_code))
    def _cosmos_create(self, file_name):
        # Step 1: interact with the namenode
        url = self.cosmos_url + '/webhdfs/v1' + self.base_dir + '/' + file_name + '?op=create&user.name=' + self.cosmos_user
        r = do_put(self.logger, url)
        if r.status_code != 307:
            raise Exception('expecting 307 but getting ' + str(r.status_code))

        # Grab datanode from Location header
        actual_datanode = self._resolve_datanode(r.headers['Location'])

        # Step 2: interact with the datanode
        url = 'http://' + actual_datanode + '/webhdfs/v1' + self.base_dir + '/' + file_name + '?op=create&user.name=' + self.cosmos_user
        r = do_put(self.logger, url)
        if r.status_code != 201:
            raise Exception('expecting 201 but getting ' + str(r.status_code))